if(i != 0 && line.charAt(i - 1) == '\\')
if(i != offset && line.array[i - 1] == '\\')
	public Enumeration markTokens(String line, int lineIndex)	{		ensureCapacity(lineIndex);		String token = lineIndex == 0 ? null : lineInfo[lineIndex - 1];		tokens.removeAllElements();		int lastOffset = 0;		int length = line.length();loop:		for(int i = 0; i < length; i++)		{			char c = line.charAt(i);			if(token == VARIABLE)			{				if(!Character.isLetterOrDigit(c) && c != '_')				{					token = null;					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						VARIABLE));					lastOffset = i;				}			}			else if(token == LVARIABLE && c == '}')			{				token = null;				tokens.addElement(new JSToken(line						.substring(lastOffset,i + 1),						VARIABLE));				lastOffset = i + 1;			}			switch(c)			{			case ' ': case '\t': case '=': case '(': case ')':				if(token == null && lastOffset == 0)				{					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						COMMAND));					lastOffset = i;				}				break;			case '#':				if(token == null && (i == 0 ||					line.charAt(i - 1) != '\\'))				{					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						null));					tokens.addElement(new JSToken(line						.substring(i,length),						COMMENT));					lastOffset = length;					break loop;				}				break;			case '$':				if(token == null)				{					if(i != length - 2)					{						switch(line.charAt(i+1))						{						case '(':							continue;						case '{':							token = LVARIABLE;							break;						default:							token = VARIABLE;							break;						}					}					else						token = VARIABLE;					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						null));					lastOffset = i;				}				break;			case '"':				if(i != 0 && line.charAt(i - 1) == '\\')					break;				if(token == null)				{					token = DQUOTE;					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						null));					lastOffset = i;				}				else if(token == DQUOTE)				{					token = null;					tokens.addElement(new JSToken(line						.substring(lastOffset,i + 1),						DQUOTE));					lastOffset = i + 1;				}				break;			case '\'':				if(i != 0 && line.charAt(i - 1) == '\\')					break;				if(token == null)				{					token = SQUOTE;					tokens.addElement(new JSToken(line						.substring(lastOffset,i),						null));					lastOffset = i;				}				else if(token == SQUOTE)				{					token = null;					tokens.addElement(new JSToken(line						.substring(lastOffset,i + 1),						SQUOTE));					lastOffset = i + 1;				}				break;			}		}		if(lastOffset != length)		{			tokens.addElement(new JSToken(line.substring(				lastOffset,length),lastOffset == 0 && token == null?				COMMAND : token));		}		lineInfo[lineIndex] = (token == SQUOTE || token == DQUOTE			? token : null);		lastLine = lineIndex;		return tokens.elements();	}