private void addState(EarleyRule<E, R> rule, int dot, int back, int left, int sub)
	{
		int size = states.size();
		for ( int i = currentSet; i < size; ++i )
		{
			EarleyState<E, R> state = states.get(i);
			if ( state.rule == rule && state.dot == dot && state.back == back )
				return;
		}

		states.add(new EarleyState<E, R>(rule, dot, back, left, sub, symbol));
	}