@Test
 public void getSizeAndCardinality() throws EditStateException, IllegalEditException {
   // add a listener to the size beed
   IntegerBeed<ActualLongEvent> sizeBeed = $unionBeed.getSize();
   sizeBeed.addListener($listener5);
   assertNull($listener5.$event);
   // check the size
   assertEquals($unionBeed.getSize().getLong(), 0L);
   assertEquals($unionBeed.getCardinality().getLong(), 0L);
   // add source
   $unionBeed.setSource($source); // {1,2} union {3} union {0,1,3}
   // check the size
   assertEquals($unionBeed.getSize().getLong(), 4L);
   assertEquals($unionBeed.getCardinality().getLong(), 4L);
   // check the listener
   assertNotNull($listener5.$event);
   assertEquals($listener5.$event.getSource(), sizeBeed);
   assertEquals($listener5.$event.getOldLong(), 0L);
   assertEquals($listener5.$event.getNewLong(), 4L);
   assertEquals($listener5.$event.getEdit(), null);
   // reset
   $listener5.reset();
   assertNull($listener5.$event);
   // remove elements
   SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>> sourceEdit =
       new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source);
   sourceEdit.addElementToRemove($setBeed1);
   sourceEdit.perform(); // {3} union {0,1,3}
   // check the size
   assertEquals($unionBeed.getSize().getLong(), 3L);
   assertEquals($unionBeed.getCardinality().getLong(), 3L);
   // check the listener
   assertNotNull($listener5.$event);
   assertEquals($listener5.$event.getSource(), sizeBeed);
   assertEquals($listener5.$event.getOldLong(), 4L);
   assertEquals($listener5.$event.getNewLong(), 3L);
   assertEquals($listener5.$event.getEdit(), sourceEdit);
   // reset
   $listener5.reset();
   assertNull($listener5.$event);
   // add elements
   EditableSetBeed<WellBeanBeed> setBeed = new EditableSetBeed<WellBeanBeed>($owner);
   addElement(setBeed, $well1);
   sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source);
   sourceEdit.addElementToAdd(setBeed);
   sourceEdit.perform(); // {3} union {0,1,3} union {1}
   // check the size
   assertEquals($unionBeed.getSize().getLong(), 3L);
   assertEquals($unionBeed.getCardinality().getLong(), 3L);
   // check the listener (size has not changed, so no events should be sent)
   assertNull($listener5.$event);
   // reset
   $listener5.reset();
   assertNull($listener5.$event);
   // add elements
   sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source);
   sourceEdit.addElementToAdd($setBeed1);
   sourceEdit.perform(); // {3} union {0,1,3} union {1} union {1,2}
   // check the size
   assertEquals($unionBeed.getSize().getLong(), 4L);
   assertEquals($unionBeed.getCardinality().getLong(), 4L);
   // check the listener
   assertNotNull($listener5.$event);
   assertEquals($listener5.$event.getSource(), sizeBeed);
   assertEquals($listener5.$event.getOldLong(), 3L);
   assertEquals($listener5.$event.getNewLong(), 4L);
   assertEquals($listener5.$event.getEdit(), sourceEdit);
 }