According to the current implementation of BasicTreeUI.startEdititng() we revalidate the editingComponent (so that it (along with its children) gets correct size and gets painted properly). And then we find the deepest component inside the editingComponent to dispatch the initial mouse event. But the issue here is since we call revalidate on editingComponent (if its a JComponent), the child components of editingComponent doest have proper bounds yet. The invocation of revalidate() will do it only asynchronously and the right sizes are not returned immediately. So SwingUtilities.getDeepestComponentAt() doesn't return the right child component within the editingComponent by this time.
We should find the first valid root for the editingComponent and call Container.validateUnconditionally() for it instead of revalidate() invocation.