public void testOwnership() {
MetadataElement root = new MetadataElement("root");
MetadataElement child = new MetadataElement("child");
ProductNodeGroup<MetadataElement> referencingGroup = new ProductNodeGroup<MetadataElement>(null, "metadataElements", false);
child.setOwner(root);
assertSame(root, child.getOwner());
referencingGroup.add(child);
assertEquals(true, referencingGroup.contains(child));
assertSame(root, child.getOwner());
referencingGroup.remove(child);
assertEquals(false, referencingGroup.contains(child));
assertSame(root, child.getOwner());
ProductNodeGroup<MetadataElement> owningGroup = new ProductNodeGroup<MetadataElement>(null, "metadataElements", true);
child.setOwner(root);
assertSame(root, child.getOwner());
owningGroup.add(child);
assertEquals(true, owningGroup.contains(child));
assertSame(owningGroup, child.getOwner());
owningGroup.remove(child);
assertEquals(false, owningGroup.contains(child));
assertSame(null, child.getOwner());
}