/*
 * Copyright (C) 2007-2015 Frank Mertens.
 *
 * Use of this source is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 */

inline NODE CHOICE(NODE choice0, NODE choice1) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26, NODE choice27) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    node->appendChild(choice27);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26, NODE choice27, NODE choice28) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    node->appendChild(choice27);
    node->appendChild(choice28);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26, NODE choice27, NODE choice28, NODE choice29) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    node->appendChild(choice27);
    node->appendChild(choice28);
    node->appendChild(choice29);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26, NODE choice27, NODE choice28, NODE choice29, NODE choice30) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    node->appendChild(choice27);
    node->appendChild(choice28);
    node->appendChild(choice29);
    node->appendChild(choice30);
    return debug(node, "Choice");
}
inline NODE CHOICE(NODE choice0, NODE choice1, NODE choice2, NODE choice3, NODE choice4, NODE choice5, NODE choice6, NODE choice7, NODE choice8, NODE choice9, NODE choice10, NODE choice11, NODE choice12, NODE choice13, NODE choice14, NODE choice15, NODE choice16, NODE choice17, NODE choice18, NODE choice19, NODE choice20, NODE choice21, NODE choice22, NODE choice23, NODE choice24, NODE choice25, NODE choice26, NODE choice27, NODE choice28, NODE choice29, NODE choice30, NODE choice31) {
    NODE node = new ChoiceNode;
    node->appendChild(choice0);
    node->appendChild(choice1);
    node->appendChild(choice2);
    node->appendChild(choice3);
    node->appendChild(choice4);
    node->appendChild(choice5);
    node->appendChild(choice6);
    node->appendChild(choice7);
    node->appendChild(choice8);
    node->appendChild(choice9);
    node->appendChild(choice10);
    node->appendChild(choice11);
    node->appendChild(choice12);
    node->appendChild(choice13);
    node->appendChild(choice14);
    node->appendChild(choice15);
    node->appendChild(choice16);
    node->appendChild(choice17);
    node->appendChild(choice18);
    node->appendChild(choice19);
    node->appendChild(choice20);
    node->appendChild(choice21);
    node->appendChild(choice22);
    node->appendChild(choice23);
    node->appendChild(choice24);
    node->appendChild(choice25);
    node->appendChild(choice26);
    node->appendChild(choice27);
    node->appendChild(choice28);
    node->appendChild(choice29);
    node->appendChild(choice30);
    node->appendChild(choice31);
    return debug(node, "Choice");
}
inline NODE GLUE(NODE child0, NODE child1) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26, NODE child27) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    node->appendChild(child27);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26, NODE child27, NODE child28) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    node->appendChild(child27);
    node->appendChild(child28);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26, NODE child27, NODE child28, NODE child29) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    node->appendChild(child27);
    node->appendChild(child28);
    node->appendChild(child29);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26, NODE child27, NODE child28, NODE child29, NODE child30) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    node->appendChild(child27);
    node->appendChild(child28);
    node->appendChild(child29);
    node->appendChild(child30);
    return debug(node, "Glue");
}
inline NODE GLUE(NODE child0, NODE child1, NODE child2, NODE child3, NODE child4, NODE child5, NODE child6, NODE child7, NODE child8, NODE child9, NODE child10, NODE child11, NODE child12, NODE child13, NODE child14, NODE child15, NODE child16, NODE child17, NODE child18, NODE child19, NODE child20, NODE child21, NODE child22, NODE child23, NODE child24, NODE child25, NODE child26, NODE child27, NODE child28, NODE child29, NODE child30, NODE child31) {
    NODE node = new GlueNode;
    node->appendChild(child0);
    node->appendChild(child1);
    node->appendChild(child2);
    node->appendChild(child3);
    node->appendChild(child4);
    node->appendChild(child5);
    node->appendChild(child6);
    node->appendChild(child7);
    node->appendChild(child8);
    node->appendChild(child9);
    node->appendChild(child10);
    node->appendChild(child11);
    node->appendChild(child12);
    node->appendChild(child13);
    node->appendChild(child14);
    node->appendChild(child15);
    node->appendChild(child16);
    node->appendChild(child17);
    node->appendChild(child18);
    node->appendChild(child19);
    node->appendChild(child20);
    node->appendChild(child21);
    node->appendChild(child22);
    node->appendChild(child23);
    node->appendChild(child24);
    node->appendChild(child25);
    node->appendChild(child26);
    node->appendChild(child27);
    node->appendChild(child28);
    node->appendChild(child29);
    node->appendChild(child30);
    node->appendChild(child31);
    return debug(node, "Glue");
}
