                                             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)
                                         }
+                                        #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)
+                                            // TODO: what is the purpose of the name of the `.bridge` children, from the point of view of the user?
+                                            //                                                                                      ~~~~~~~~~~~~~~~~~~~~~~~
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].key, key2.name(singular: cardinality2.isSingular))
+                                            XCTAssertEqual(relation.children[0].value.relation.children[0].value.kind, .bridge)
+                                            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: false))
+                                            XCTAssertEqual(relation.children[0].value.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)
+                                        }
                                     }
                                 }
                             }

                                        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[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))
