                                 XCTAssertEqual(relation.children[0].value.relation.children.count, 1)
                                 XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: false))
                                 XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .all)
+                            }
+                            
+                            #warning("TODO: here we see the problem: it should be possible to merge association1 when it is singular.")
+                            // TODO: what is the purpose of the name of the `.bridge` children, from the point of view of the user?
+                            // ~~~~~~~~~~~~~~~~~~~~~~~~
+                            if !cardinality1.isSingular && key1.name(singular: true) != key1.name(singular: false) {
+                                let relation = relation._joining(optional: association1)
+                                XCTAssertEqual(relation.children.count, 2)
+                                // TODO: what is the purpose of the name of the `.bridge` children, from the point of view of the user?
+                                //                                                           ~~~~~~~~~~~~~~~~~~~~~~~
+                                XCTAssertEqual(relation.children[0].key, key1.name(singular: cardinality1.isSingular))
+                                XCTAssertEqual(relation.children[0].value.kind, .bridge)
+                                XCTAssertEqual(relation.children[0].value.relation.children.count, 1)
+                                XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: false))
+                                XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .all)
+                                XCTAssertEqual(relation.children[1].key, key1.name(singular: true))
+                                XCTAssertEqual(relation.children[1].value.kind, .oneOptional)
+                                XCTAssertEqual(relation.children[1].value.relation.children.count, 0)
                             }
                         }
                     }

                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.relation.children[0].key, key3.name(singular: false))
                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.relation.children[0].value.kind, .all)
                                        }
                                    }
                                }
                            }

                                        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)
