@ContinuousIntegrationTest(estimatedDuration = 0.0)
  @Test(timeout = 300000)
  public void testRemoveObserver() {
    // create some observers, add them to yoVariable
    int nObservers = 5;
    createVariableChangeListeners(nObservers);
    addAllListenersToYoVariable();

    // let yoVariable notify observers. Assert that they got the event.
    yoVariable.notifyVariableChangedListeners();

    for (TestVariableChangedListener observer : variableChangedListeners) {
      assertEquals(observer.getLastVariableChanged(), yoVariable);
    }

    // Remove and reset observers. Let yoVariable notify observers again. Assert that the observers
    // didn't notice anything.
    for (VariableChangedListener observer : variableChangedListeners) {
      yoVariable.removeVariableChangedListener(observer);
    }

    resetAllObservers();
    yoVariable.notifyVariableChangedListeners();

    for (TestVariableChangedListener observer : this.variableChangedListeners) {
      assertNull(observer.getLastVariableChanged());
    }
  }
 @ContinuousIntegrationTest(estimatedDuration = 0.0)
 @Test(timeout = 300000)
 public void testAddVariableChangeListener() {
   // remove all observers, then add one new observer, and check if it can be removed without
   // exceptions.
   yoVariable.removeAllVariableChangedListeners();
   TestVariableChangedListener listener = new TestVariableChangedListener();
   yoVariable.addVariableChangedListener(listener);
   yoVariable.removeVariableChangedListener(listener);
 }
 @ContinuousIntegrationTest(estimatedDuration = 0.0)
 @Test(timeout = 300000)
 public void testRemoveObserverNonExistent1() {
   // make sure removing an observer that wasn't added throws an exception.
   try {
     yoVariable.removeVariableChangedListener(new TestVariableChangedListener());
     fail();
   } catch (NoSuchElementException e) {
     // pass.
   }
 }
 @ContinuousIntegrationTest(estimatedDuration = 0.0)
 @Test(timeout = 300000, expected = NoSuchElementException.class)
 public void testRemoveObserverNonExistent2() {
   // make sure removing an observer that wasn't added throws an exception.
   //      try
   {
     createVariableChangeListeners(5);
     addAllListenersToYoVariable();
     yoVariable.removeVariableChangedListener(new TestVariableChangedListener());
     // fail();
   }
   //      catch (NoSuchElementException e)
   {
     // pass.
   }
 }