                                         relation._including(required: association),
                                     ] {
                                         do {
+                                            XCTAssertEqual(relation.children.count, 1)
+                                            XCTAssertEqual(relation.children[0].key, key1.name(singular: true))
+                                            XCTAssertEqual(relation.children[0].value.kind, .oneRequired)
+                                            XCTAssertEqual(relation.children[0].value.relation.children.count, 1)
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: true))
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .oneRequired)
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.relation.children.count, 1)
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.relation.children[0].key, key3.name(singular: true))
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.relation.children[0].value.kind, .oneRequired)
+                                        }
+                                        do {
+                                            let relation = relation._joining(optional: association1)
                                             XCTAssertEqual(relation.children.count, 1)
                                             XCTAssertEqual(relation.children[0].key, key1.name(singular: true))
                                             XCTAssertEqual(relation.children[0].value.kind, .oneRequired)

                                    XCTAssertEqual(relation.children[0].value.relation.children.count, 1)
                                    XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: true))
                                    XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .oneRequired)
                                    XCTAssertEqual(relation.children[1].key, key1.name(singular: false))
                                    XCTAssertEqual(relation.children[1].value.kind, .bridge)
                                    XCTAssertEqual(relation.children[1].value.relation.children.count, 1)
                                    XCTAssertEqual(relation.children[1].value.relation.children[0].key, key2.name(singular: false))

                                    XCTAssertEqual(relation.children[0].value.relation.children.count, 1)
                                    XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: true))
                                    XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .oneOptional)
                                    XCTAssertEqual(relation.children[1].key, key1.name(singular: cardinality1.isSingular))
                                    XCTAssertEqual(relation.children[1].value.kind, .bridge)
                                    XCTAssertEqual(relation.children[1].value.relation.children.count, 1)
                                    XCTAssertEqual(relation.children[1].value.relation.children[0].key, key2.name(singular: false))
