docs: private void processChildEvent(WatchedEvent event) throws Exception {
          HashMap<Integer, LeaderCallBackInfo> cacheCopy = new HashMap<Integer, LeaderCallBackInfo>(m_publicCache);
          ByteArrayCallback cb = new ByteArrayCallback();
          m_zk.getData(event.getPath(), m_childWatch, cb, null);
          try {
              // cb.getData() and cb.getPath() throw KeeperException
              byte payload[] = cb.get();
              String data = new String(payload, "UTF-8");
              LeaderCallBackInfo info = LeaderCache.buildLeaderCallbackFromString(data);
              Integer partitionId = getPartitionIdFromZKPath(cb.getPath());
              cacheCopy.put(partitionId, info);
          } catch (KeeperException.NoNodeException e) {
              // rtb: I think result's path is the same as cb.getPath()?
              Integer partitionId = getPartitionIdFromZKPath(event.getPath());
              cacheCopy.remove(partitionId);
          }
          m_publicCache = ImmutableMap.copyOf(cacheCopy);
          if (m_cb != null) {
              m_cb.run(m_publicCache);
          }
      }