#define nx_union_ref_length(x) AST_node_length(CAST(node, (x)))
#define last_nx_union_ref(x) CAST(nx_union_ref, AST_node_last(CAST(node, (x))))
#define scan_nx_union_ref(var, list) for (var = (list); var; var = CAST(nx_union_ref, var->next))
+#define target_attribute_reverse(x) CAST(target_attribute, AST_node_reverse(CAST(node, (x))))
+#define target_attribute_length(x) AST_node_length(CAST(node, (x)))
+#define last_target_attribute(x) CAST(target_attribute, AST_node_last(CAST(node, (x))))
+#define scan_target_attribute(var, list) for (var = (list); var; var = CAST(target_attribute, var->next))
node node_chain(node l1, node l2);
declaration declaration_chain(declaration l1, declaration l2);
statement statement_chain(statement l1, statement l2);
eq_connection eq_connection_chain(eq_connection l1, eq_connection l2);
nx_struct_ref nx_struct_ref_chain(nx_struct_ref l1, nx_struct_ref l2);
nx_union_ref nx_union_ref_chain(nx_union_ref l1, nx_union_ref l2);
+target_attribute target_attribute_chain(target_attribute l1, target_attribute l2);