private int processInstruction(int textState, int tokenStart, int tokenEnd,
protected int processInstruction(int textState, int tokenStart, int tokenEnd,
	private int processInstruction(int textState, int tokenStart, int tokenEnd,			StringBuilder buffer, Model model)	{		String instruction = template.subSequence(tokenStart, tokenEnd).toString();		getLogger().log(Level.FINER, "processInstruction: " + instruction, buffer);		if (instruction.startsWith("if "))		{			String condition = template.subSequence(tokenStart + 3, tokenEnd).toString();			if (evaluateCondition(condition, model))			{				textState = TEXT_APPEND;			}			else			{				textState = TEXT_SKIP;			}		}		else if (instruction.startsWith("else if "))		{			if (textState == TEXT_SKIP)			{				String condition = template.subSequence(tokenStart + 4, tokenEnd).toString();				if (evaluateCondition(condition, model))				{					textState = TEXT_APPEND;				}			}		}		else if (instruction.equals("else"))		{			if (textState == TEXT_SKIP)			{				textState = TEXT_APPEND;			}			else if (textState == TEXT_APPEND)			{				textState = TEXT_SKIP;			}		}		else if (instruction.equals("end"))		{			textState = TEXT_APPEND;		}		else		{			getLogger().log(Level.WARNING, "Unsupported instruction ignored: ", instruction);		}		return textState;	}