addToken((i+1) - lastOffset,Token.LITERAL1);
addToken(i1 - lastOffset,Token.LITERAL1);
	public byte markTokensImpl(byte token, Segment line, int lineIndex)	{		int offset = line.offset;		int lastOffset = offset;		int length = line.count + offset;		boolean backslash = false;loop:		for(int i = offset; i < length; i++)		{			switch(line.array[i])			{			case '\\':				backslash = !backslash;				break;			case ':': case '=': case ' ': case '\t':				backslash = false;				if(token == Token.NULL && lastOffset == offset)				{					addToken((i+1) - lastOffset,Token.KEYWORD1);					lastOffset = i + 1;				}				break;			case '#':				if(backslash)					backslash = false;				else if(token == Token.NULL)				{					addToken(i - lastOffset,Token.NULL);					addToken(length - i,Token.COMMENT1);					lastOffset = length;					break loop;				}				break;			case '$':				if(backslash)					backslash = false;				else if(token == Token.NULL && lastOffset != offset)				{					addToken(i - lastOffset,Token.NULL);					lastOffset = i;					if(length - i > 1)	 				{						char c = line.array[i + 1];				      		if(c == '(' || c == '{')							token = Token.KEYWORD2;						else						{							addToken(2,Token.KEYWORD2);							lastOffset += 2;							i++;						}					}				}				break;			case ')': case '}':				backslash = false;				if(token == Token.KEYWORD2)				{					token = Token.NULL;					addToken((i+1) - lastOffset,Token.KEYWORD2);					lastOffset = i + 1;				}				break;			case '"':				if(backslash)				{					backslash = false;					break;				}				if(token == Token.NULL)				{					token = Token.LITERAL1;					addToken(i - lastOffset,Token.NULL);					lastOffset = i;				}				else if(token == Token.LITERAL1)				{					token = Token.NULL;					addToken((i+1) - lastOffset,Token.LITERAL1);					lastOffset = i + 1;				}				break;			case '\'':				if(backslash)				{					backslash = false;					break;				}				if(token == Token.NULL)				{					token = Token.LITERAL2;					addToken(i - lastOffset,Token.NULL);					lastOffset = i;				}				else if(token == Token.LITERAL2)				{					token = Token.NULL;					addToken((i+1) - lastOffset,Token.LITERAL1);					lastOffset = i + 1;				}				break;			default:				backslash = false;				break;			}		}		if(lastOffset != length)		{			if(token != Token.NULL && token != Token.KEYWORD2)			{				addToken(length - lastOffset,Token.INVALID);				token = Token.NULL;			}			else			{				addToken(length - lastOffset,lastOffset == offset ?					 Token.KEYWORD1 : token);			}		}		return (token == Token.LITERAL1 || token == Token.LITERAL2 ?			token : Token.NULL);	}