void (@NotNull DefaultMutableTreeNode node) { assertIsDispatchThread(); if (isNodeBeingBuilt(node)) return; NodeDescriptor<?> descriptor = getDescriptorFrom(node); if (descriptor == null) return; if (isYieldingNow()) { myPendingNodeActions.add(node); return; } Object element = getElementFromDescriptor(descriptor); boolean childrenReady = !isLoadedInBackground(element) && !isUpdatingChildrenNow(node); processActions(node, element, myNodeActions, childrenReady ? myNodeChildrenActions : null); if (childrenReady) { processActions(node, element, myNodeChildrenActions, null); } warnMap("myNodeActions: processNodeActionsIfReady: ", myNodeActions); warnMap("myNodeChildrenActions: processNodeActionsIfReady: ", myNodeChildrenActions); if (!isUpdatingParent(node) && !isWorkerBusy()) { UpdaterTreeState state = myUpdaterState; if (myNodeActions.isEmpty() && state != null && !state.isProcessingNow()) { if (canInitiateNewActivity()) { if (!state.restore(childrenReady ? node : null)) { setUpdaterState(state); } } } } maybeReady(); }