public AsyncResult<AbstractTreeNode> expandPathToElement(Object element) { if (myAbstractTreeBuilder == null) return new AsyncResult.Rejected<AbstractTreeNode>(); ArrayList<AbstractTreeNode> pathToElement = getPathToElement(element); if (pathToElement.isEmpty()) return new AsyncResult.Rejected<AbstractTreeNode>(); final AsyncResult<AbstractTreeNode> result = new AsyncResult<AbstractTreeNode>(); final AbstractTreeNode toExpand = pathToElement.get(pathToElement.size() - 1); myAbstractTreeBuilder.expand( toExpand, new Runnable() { public void run() { result.setDone(toExpand); } }); return result; }