@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 testNotifyVaribaleChangeListeners() {
    // create a bunch of Observers
    @SuppressWarnings("unused")
    int nObservers = 5;
    createVariableChangeListeners(5);

    // add them to the YoVariable
    yoVariable.removeAllVariableChangedListeners();
    addAllListenersToYoVariable();

    // create an observer that's not supposed to be notified.
    TestVariableChangedListener hearNoEvil = new TestVariableChangedListener();

    // make sure there's no event stored in the observers before we set
    for (TestVariableChangedListener listener : variableChangedListeners) {
      assertNull(listener.getLastVariableChanged());
    }

    assertNull(hearNoEvil.getLastVariableChanged());

    // now notify and check if the observers catch on

    yoVariable.notifyVariableChangedListeners();

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

    // make sure hearNoEvil is unaware
    assertNull(hearNoEvil.getLastVariableChanged());
  }