addToken(i - lastOffset,JAVASCRIPT);
addToken(i - lastOffset,Token.NULL);
	public byte markTokensImpl(byte token, Segment line, int lineIndex)	{		boolean backslash = false;		int offset = line.offset;		int lastOffset = offset;		int lastKeyword = offset;		int length = line.count + offset;loop:		for(int i = offset; i < length; i++)		{			switch(line.array[i])			{			case '\\':				backslash = !backslash;				break;			case ';':				if(token == Token.KEYWORD2)				{					token = Token.NULL;					addToken((i+1) - lastOffset,Token.KEYWORD2);					lastOffset = i + 1;					break;				}			case '*':				if(token == Token.COMMENT2 && length - i > 1)				{					if(length - i > 1 && line.array[i+1] == '/')					{						backslash = false;						token = JAVASCRIPT;						i++;						addToken((i+1) - lastOffset,Token.COMMENT2);						lastOffset = i + 1;						break;					}				}			case '.': case ',': case ' ': case '\t':			case '(': case ')': case '[': case ']':			case '{': case '}':				backslash = false;				if(token == JAVASCRIPT)				{					int len = i - lastKeyword;					byte id = keywords.lookup(line,lastKeyword,len);					if(id != Token.NULL)					{						if(lastKeyword != lastOffset)							addToken(lastKeyword - lastOffset,								Token.NULL);						addToken(len,id);						lastOffset = i;					}					lastKeyword = i + 1;				}				break;			case '<':				backslash = false;				if(token == Token.NULL)				{					if(SyntaxUtilities.regionMatches(false,						line,i,"<!--"))						token = Token.COMMENT1;					else						token = Token.KEYWORD1;					addToken(i - lastOffset,Token.NULL);					lastOffset = i;				}				else if(token == JAVASCRIPT)				{					if(SyntaxUtilities.regionMatches(true,						line,i,"</SCRIPT>"))					{						token = Token.KEYWORD1;						addToken(i - lastOffset,Token.NULL);						lastOffset = i;					}				}				break;			case '>':				backslash = false;				if(token == Token.KEYWORD1)				{					if(SyntaxUtilities.regionMatches(true,line,						lastOffset,"<SCRIPT"))						token = JAVASCRIPT;					else						token = Token.NULL;					addToken((i+1) - lastOffset,Token.KEYWORD1);					lastOffset = i + 1;				}				else if(token == Token.COMMENT1)				{					if(SyntaxUtilities.regionMatches(false,line,						i - 2,"-->"))					{						token = Token.NULL;						addToken((i+1) - lastOffset,							 Token.COMMENT1);						lastOffset = i + 1;					}				}				break;			case '&':				backslash = false;				if(token == Token.NULL)				{					token = Token.KEYWORD2;					addToken(i - lastOffset,Token.NULL);					lastOffset = i;				}				break;			case ':':				backslash = false;				if(token == JAVASCRIPT && lastKeyword == offset)				{					addToken((i+1) - lastOffset,Token.LABEL);					lastOffset = i + 1;				}				break;			case '/':				backslash = false;				if(token == JAVASCRIPT && length - i > 1)				{					switch(line.array[i+1])					{					case '*':						token = Token.COMMENT2;						addToken(i - lastOffset,JAVASCRIPT);						lastOffset = i;						i++;						break;					case '/':						addToken(i - lastOffset,token);						addToken(length - i,Token.COMMENT2);						lastOffset = length;						break loop;					}				}				break;			case '"':				if(backslash)					backslash = false;				else if(token == JAVASCRIPT)				{					token = Token.LITERAL1;					addToken(i - lastOffset,JAVASCRIPT);					lastOffset = i;				}				else if(token == Token.LITERAL1)				{					token = JAVASCRIPT;					addToken((i+1) - lastOffset,Token.LITERAL1);					lastOffset = i + 1;				}				break;			case '\'':				if(backslash)					backslash = false;				else if(token == JAVASCRIPT)				{					token = Token.LITERAL2;					addToken(i - lastOffset,JAVASCRIPT);					lastOffset = i;				}				else if(token == Token.LITERAL2)				{					token = JAVASCRIPT;					addToken((i+1) - lastOffset,Token.LITERAL1);					lastOffset = i + 1;				}				break;			default:				backslash = false;				break;			}		}		if(token == JAVASCRIPT)		{			int len = length - lastKeyword;			byte id = keywords.lookup(line,lastKeyword,len);			if(id != Token.NULL)			{				if(lastKeyword != lastOffset)					addToken(lastKeyword - lastOffset,Token.NULL);				addToken(len,id);				lastOffset = length;			}		}		if(lastOffset != length)		{			if(token == Token.LITERAL1 || token == Token.LITERAL2				|| token == Token.KEYWORD2)			{				addToken(length - lastOffset,Token.INVALID);				if(token == Token.KEYWORD2)					token = Token.NULL;				else					token = JAVASCRIPT;			}			else				addToken(length - lastOffset,token);		}		return token;	}