@Override
  public void unregisterClusterListener(final LoadBalancerClusterListener listener)
  {
    trace(_log, "unregister listener: ", listener);

    _executor.execute(new PropertyEvent("remove cluster listener for state")
    {
      @Override
      public void innerRun()
      {
        _clusterListeners.remove(listener);
      }
    });
  }
@Test
  public void testUnregisterClusterListener()
  {
    reset();

    MockClusterListener clusterListener = new MockClusterListener();
    _state.registerClusterListener(clusterListener);
    assertEquals(clusterListener.getClusterAddedCount(CLUSTER1_CLUSTER_NAME), 0, "expected zero count");

    // first add a cluster
    _state.listenToCluster(CLUSTER1_CLUSTER_NAME, new NullStateListenerCallback());
    _clusterRegistry.put(CLUSTER1_CLUSTER_NAME, new ClusterProperties(CLUSTER1_CLUSTER_NAME));

    assertEquals(clusterListener.getClusterAddedCount(CLUSTER1_CLUSTER_NAME), 1, "expected 1 call after put");

    _state.unregisterClusterListener(clusterListener);
    _clusterRegistry.put(CLUSTER1_CLUSTER_NAME, new ClusterProperties(CLUSTER1_CLUSTER_NAME));
    assertEquals(clusterListener.getClusterAddedCount(CLUSTER1_CLUSTER_NAME), 1, "expected 1 call, since we shouldn't have seen the latest put");
  }