protected ResultTree consumeInternal(InputText input)
		throws IOException
	{
		if (strategy == null)	{	// sort alternatives by their start/fixed length
			strategy = strategyFactoryMethod != null ? strategyFactoryMethod.newStrategy() : new Strategy();

			for (int i = 0; i < alternates.size(); i++)	{
				Consumer cc = (Consumer) alternates.get(i);
				strategy.addTokenConsumer(cc.rule.getNonterminal(), cc);
			}
		}

		Strategy.Item item = strategy.consume(input, input.peek(), null);
		if (item != null)
			return item.getResultTree();
			
		return null;
	}