start = Math.max(0,start); end = Math.min(getLength(),end);
int newStart, newEnd; boolean newBias;
	public void select(int start, int end)	{		start = Math.max(0,start);		end = Math.min(getLength(),end);		if(start <= end)		{			selectionStart = start;			selectionEnd = end;			biasLeft = false;		}		else		{			selectionStart = end;			selectionEnd = start;			biasLeft = true;		}		int oldSelectionStartLine = selectionStartLine;		int oldSelectionEndLine = selectionEndLine;		selectionStartLine = getLineOfOffset(selectionStart);		selectionEndLine = getLineOfOffset(selectionEnd);		textArea.getPainter()._invalidateLineRange(			Math.min(oldSelectionStartLine,selectionStartLine),			Math.max(oldSelectionEndLine,selectionEndLine));		int line = getCaretLine();		int lineStart = getLineStartOffset(line);		if(!textArea.scrollTo(line,getCaretPosition() - start))			textArea.getPainter().repaint();	}