**I dont get it. Can some one explain this to me:**

Spec: Page Number 139

** One-to-many bidirectional relationships**

A and B are in a one-to-many bidirectional relationship:

A 0..1<-----> 0..* B

Before change:

Collection b1 = a1.getB();

Collection b2 = a2.getB();

B b11, b12, ... , b1n; // members of b1

B b21, b22, ... , b2m; // members of b2

Change:

a1.setB(a2.getB());

Expected result:

(a2.getB().isEmpty()) &&

(b2.isEmpty()) &&

(b1 == a1.getB()) &&

(b2 == a2.getB()) &&

(a1.getB().contains(b21)) &&

(a1.getB().contains(b22)) && ... &&

(a1.getB().contains(b2m)) &&

(b11.getA() == null) &&

(b12.getA() == null) && ... &&

(b1n.getA() == null) &&

(a1.isIdentical(b21.getA())) &&

(a1.isIdentical(b22.getA())) && ...&&

(a1.isIdentical(b2m.getA()))

I understand the above. But.

Change:

b2m.setA(b1n.getA());

Since b1n.getA() == null, shouldn't it be b2m.setA(null); ??

but according to the spec, it is

Expected result:

(b1.contains(b11)) &&

(b1.contains(b12)) && ... &&

(b1.contains(b1n)) &&

(b1.contains(b2m)) &&

(b2.contains(b21)) &&

(b2.contains(b22)) && ... &&

(b2.contains(b2m_1)) &&

(a1.isIdentical(b11.getA())) &&

(a1.isIdentical(b12.getA())) && ... &&

(a1.isIdentical(b1n.getA())) &&

(a2.isIdentical(b21.getA())) &&

(a2.isIdentical(b22.getA())) && ... &&

(a2.isIdentical(b2m_1.getA())) &&

(a1.isIdentical(b2m.getA()))