code: private Map<String, T> sync() throws KeeperException {
      log.debug("syncing: {}", path);
  
      final Map<String, T> newSnapshot = Maps.newHashMap();
  
      // Fetch new snapshot and register watchers
      try {
        final List<String> children = getChildren();
        log.debug("children: {}", children);
        for (final String child : children) {
          final String node = ZKPaths.makePath(path, child);
          final byte[] bytes = curator.getData()
              .usingWatcher(dataWatcher)
              .forPath(node);
          final String json = new String(bytes, UTF_8);
          log.debug("child: {}={}", node, json);
          final T value;
          try {
            value = Json.read(bytes, valueType);
          } catch (IOException e) {
            log.warn("failed to parse node: {}: {}", node, json, e);
            // Treat parse failure as absence
            continue;
          }
          newSnapshot.put(node, value);
        }
      } catch (KeeperException e) {
        throw e;
      } catch (Exception e) {
        Throwables.throwIfUnchecked(e);
        throw new RuntimeException(e);
      }
  
      return newSnapshot;
    }
docs: Fetch new snapshot and register watchers.