private synchronized void buildTreeRecursive()

in tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java [218:241]


  private synchronized void buildTreeRecursive(
      RibNode node, @Nullable TargetInfo targetInfo, int depth) {
    List<UUID> childIds = children.get(node.getId());
    if (childIds == null) {
      return;
    }
    for (UUID childId : childIds) {
      Router router = getRouterFromId(childId);
      if (router == null) {
        throw new IllegalArgumentException();
      }
      View view = router instanceof ViewRouter ? ((ViewRouter) router).getView() : null;
      RibView ribView = view != null ? buildRibView(view) : null;
      RibNode childNode = new RibNode(router.getClass().getName(), childId, ribView);
      if (targetInfo != null
          && view != null
          && depth > targetInfo.nodeDepth
          && viewIncludesTarget(view, targetInfo.targetX, targetInfo.targetY)) {
        targetInfo.setNode(childNode, depth);
      }
      node.addChildren(childNode);
      buildTreeRecursive(childNode, targetInfo, depth + 1);
    }
  }