@Override
  protected void handleRemove(final String listenTo)
  {
    _log.warn("Received a service properties event to remove() for service = " + listenTo);
    LoadBalancerStateItem<ServiceProperties> serviceItem =
      _simpleLoadBalancerState.getServiceProperties().remove(listenTo);

    if (serviceItem != null && serviceItem.getProperty() != null)
    {
      ServiceProperties serviceProperties = serviceItem.getProperty();

      // remove this service from the cluster -> services map
      Set<String> serviceNames =
        _simpleLoadBalancerState.getServicesPerCluster().get(serviceProperties.getClusterName());

      if (serviceNames != null)
      {
        serviceNames.remove(serviceProperties.getServiceName());
      }

      _simpleLoadBalancerState.notifyListenersOnServicePropertiesRemovals(serviceItem);
      _simpleLoadBalancerState.shutdownClients(listenTo);

    }
  }
@Test
  public void testHandleRemove()
  {
    String serviceName = "mock-service-foo";
    String clusterName = "mock-cluster-foo";
    ServiceLoadBalancerSubscriberFixture fixture = new ServiceLoadBalancerSubscriberFixture();
    LoadBalancerStateItem<ServiceProperties> servicePropertiesToRemove = new LoadBalancerStateItem<>(
        new ServiceProperties(serviceName, clusterName, "MockPath", new ArrayList<>(Arrays.asList("foo", "bar"))),
        0, 0);

    fixture._serviceProperties.put(serviceName, servicePropertiesToRemove);
    fixture.getMockSubscriber(false).handleRemove(serviceName);

    Assert.assertEquals(fixture._simpleLoadBalancerState.getServiceProperties().size(), 0);
    verify(
        fixture._simpleLoadBalancerState,
        times(1)
    ).notifyListenersOnServicePropertiesRemovals(servicePropertiesToRemove);
    verify(
        fixture._simpleLoadBalancerState,
        times(1)
    ).shutdownClients(serviceName);
  }