+ g_array_set_size(variant->fields, variant_declaration->fields->len);
+ for (i = 0; i < variant_declaration->fields->len; i++) {
+ struct declaration_field *declaration_field =
+ &g_array_index(variant_declaration->fields,
+ struct declaration_field, i);
+ struct field *field = &g_array_index(variant->fields,
+ struct field, i);
+
+ field->name = declaration_field->name;
+ /*
+ * All child definition are at index 0, because they are
+ * various choices of the same field.
+ */
+ field->definition =
+ declaration_field->declaration->definition_new(declaration_field->declaration,
+ variant->scope,
+ field->name, 0);
+ }