code: public void leave(T physicalAddress)
     {
        if (trace)
           log.tracef("LEAVE(%s)", physicalAddress);
  
        Set<Address> remove = new HashSet<Address>();
  
        for (Entry<Address, T> entry : nodes.entrySet())
        {
           if (physicalAddress.equals(entry.getValue()))
           {
              remove.add(entry.getKey());
           }
        }
  
        if (!remove.isEmpty())
        {
  
           for (Address logicalAddress : remove)
           {
              nodes.remove(logicalAddress);
  
              DistributedWorkManager dwm = workManagerCoordinator.resolveDistributedWorkManager(logicalAddress);
  
              if (dwm != null)
              {
                 Collection<NotificationListener> copy =
                    new ArrayList<NotificationListener>(dwm.getNotificationListeners());
                 for (NotificationListener nl : copy)
                 {
                    nl.leave(logicalAddress);
                 }
              }
              else
              {
                 WorkManagerEventQueue wmeq = WorkManagerEventQueue.getInstance();
                 wmeq.addEvent(new WorkManagerEvent(WorkManagerEvent.TYPE_LEAVE, logicalAddress));
              }
           }
        }
     }
docs: leave
  @param physicalAddress the physical address