Token tokens = tokenMarker.markTokens(lineSegment,line).firstToken;
	public int offsetToX(int line, int offset)	{		TokenMarker tokenMarker = getTokenMarker();		/* Use painter's cached info for speed */		FontMetrics fm = painter.getFontMetrics();		getLineText(line,lineSegment);		int segmentOffset = lineSegment.offset;		int x = horizontalOffset;		Token tokens = tokenMarker.markTokens(lineSegment,line).firstToken;		Toolkit toolkit = painter.getToolkit();		Font defaultFont = painter.getFont();		SyntaxStyle[] styles = painter.getStyles();		for(;;)		{			byte id = tokens.id;			if(id == Token.END)			{				return x;			}			if(id == Token.NULL)				fm = painter.getFontMetrics();			else				fm = styles[id].getFontMetrics(defaultFont);			int length = tokens.length;			if(offset + segmentOffset < lineSegment.offset + length)			{				lineSegment.count = offset - (lineSegment.offset - segmentOffset);				return x + Utilities.getTabbedTextWidth(					lineSegment,fm,x,painter,0);			}			else			{				lineSegment.count = length;				x += Utilities.getTabbedTextWidth(					lineSegment,fm,x,painter,0);				lineSegment.offset += length;			}			tokens = tokens.next;		}	}