if(bufferNode.getChildCount() == 0) return false;  SwingUtilities.invokeLater(new Runnable()
if(resultCount != 0)
	private boolean doHyperSearch(Buffer buffer, SearchMatcher matcher)		throws Exception	{		setAbortable(false);		final DefaultMutableTreeNode bufferNode = new DefaultMutableTreeNode(			buffer.getPath());		try		{			buffer.readLock();			Element map = buffer.getDefaultRootElement();			Segment text = new Segment();			int offset = 0;			int length = buffer.getLength();			int line = -1;loop:			for(;;)			{				buffer.getText(offset,length - offset,text);				int[] match = matcher.nextMatch(text);				if(match == null)					break loop;				offset += match[1];				int newLine = map.getElementIndex(offset);				if(line == newLine)				{					// already had a result on this					// line, skip					continue loop;				}				line = newLine;				bufferNode.insert(new DefaultMutableTreeNode(					new HyperSearchResult(buffer,line),false),					bufferNode.getChildCount());			}		}		finally		{			buffer.readUnlock();		}		if(bufferNode.getChildCount() == 0)			return false;		SwingUtilities.invokeLater(new Runnable()		{			public void run()			{				resultTreeRoot.insert(bufferNode,					resultTreeRoot.getChildCount());				resultTreeModel.reload(resultTreeRoot);			}		});		setAbortable(true);		return true;	}