code: public synchronized Address selectDistributedWorkManager(Address own, DistributableWork work)
     {
        if (trace)
           log.tracef("Own: %s, Work: %s", own, work);
  
        /*
          TODO
  
        String value = getWorkManager(work);
        if (value != null)
        {
           if (trace)
              log.tracef("WorkManager: %s", value);
  
           return value;
        }
        */
  
        Map<Address, Long> selectionMap = getSelectionMap(own.getWorkManagerId(), work);
        // No sorting needed
  
        if (trace)
           log.tracef("SelectionMap: %s", selectionMap);
  
        if (selectionMap != null)
        {
           for (Map.Entry<Address, Long> entry : selectionMap.entrySet())
           {
              Address id = entry.getKey();
              if (!own.equals(id))
              {
                 Long free = entry.getValue();
                 if (free != null && free.longValue() > 0)
                 {
                    if (trace)
                       log.tracef("WorkManager: %s", id);
                    
                    return id;
                 }
              }
           }
        }
  
        if (trace)
           log.tracef("WorkManager: None");
  
        return null;
     }
docs: {@inheritDoc}