ActionCallback (@Nullable final Place place, final boolean requestFocus) { if (place == null) return ActionCallback.DONE; final Object object = place.getPath(TREE_OBJECT); final String byName = (String)place.getPath(TREE_NAME); if (object == null && byName == null) return ActionCallback.DONE; final MyNode node = object == null ? null : findNodeByObject(myRoot, object); final MyNode nodeByName = byName == null ? null : findNodeByName(myRoot, byName); if (node == null && nodeByName == null) return ActionCallback.DONE; NamedConfigurable<?> config = Objects.requireNonNullElse(node, nodeByName).getConfigurable(); ActionCallback result = new ActionCallback().doWhenDone(() -> myAutoScrollEnabled = true); myAutoScrollEnabled = false; myAutoScrollHandler.cancelAllRequests(); final MyNode nodeToSelect = node != null ? node : nodeByName; selectNodeInTree(nodeToSelect, requestFocus).doWhenDone(() -> { setSelectedNode(nodeToSelect); Place.goFurther(config, place, requestFocus).notifyWhenDone(result); }); return result; }