void executeAllChildren(@NotNull Disposable object, @NotNull Predicate<? super Disposable> predicate) {
    runWithTrace((tree, trace) -> {
      ObjectNode parentNode = getParentNode(object);
      ObjectNode node = parentNode.findChildNode(object);
      if (node == null) {
        return Collections.emptyList();
      }
      List<Disposable> disposables = new ArrayList<>();
      node.removeChildNodesRecursively(disposables, tree, trace, predicate);
      for (Disposable disposable : disposables) {
        myObject2ParentNode.remove(disposable);
      }
      return disposables;
    });
  }
void executeAllChildren(@NotNull Disposable object, @NotNull Predicate<? super Disposable> predicate)