@Test
 public void recalculate() throws EditStateException, IllegalEditException {
   // union beed has no source
   $unionBeed.recalculate();
   assertTrue($unionBeed.get().isEmpty());
   // create source
   EditableSetBeed<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>> source =
       new EditableSetBeed<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($owner);
   // add source to mean beed
   $unionBeed.setSource(source); // {}
   // recalculate (source contains no elements)
   $unionBeed.recalculate();
   assertTrue($unionBeed.get().isEmpty());
   SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>> sourceEdit =
       new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>(source);
   sourceEdit.addElementToAdd($setBeed1);
   sourceEdit.perform();
   // recalculate (source contains {1,2})
   $unionBeed.recalculate();
   assertEquals($unionBeed.get().size(), 2);
   assertTrue($unionBeed.get().contains($well1));
   assertTrue($unionBeed.get().contains($well2));
   // recalculate (setBeed contains beed 1)
   $unionBeed.recalculate();
   assertEquals($unionBeed.get().size(), 2);
   assertTrue($unionBeed.get().contains($well1));
   assertTrue($unionBeed.get().contains($well2));
   // add beed
   sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>(source);
   sourceEdit.addElementToAdd($setBeed2);
   sourceEdit.perform();
   // recalculate (setBeed contains {1,2} and {3})
   $unionBeed.recalculate();
   assertEquals($unionBeed.get().size(), 3);
   assertTrue($unionBeed.get().contains($well1));
   assertTrue($unionBeed.get().contains($well2));
   assertTrue($unionBeed.get().contains($well3));
   // recalculate (setBeed contains {1,2} and {3})
   assertEquals($unionBeed.get().size(), 3);
   assertTrue($unionBeed.get().contains($well1));
   assertTrue($unionBeed.get().contains($well2));
   assertTrue($unionBeed.get().contains($well3));
   // add beed
   sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>(source);
   sourceEdit.addElementToAdd($setBeed3);
   sourceEdit.perform();
   // recalculate (setBeed contains {1,2} and {3} and {0,1,3})
   $unionBeed.recalculate();
   assertEquals($unionBeed.get().size(), 4);
   assertTrue($unionBeed.get().contains($well0));
   assertTrue($unionBeed.get().contains($well1));
   assertTrue($unionBeed.get().contains($well2));
   assertTrue($unionBeed.get().contains($well3));
 }