private void storeRead(int i)	{
		if (buffer == null)	// allocate buffer
			buffer = new int [128];
		
		if (readPos == buffer.length)	{	// reallocate buffer as it is too small
			//System.err.println("enlarging lexer buffer from "+buffer.length);
			int [] old = buffer;
			// the buffer must not be as long as the input, it just serves as lookahead buffer.
			buffer = new int[old.length * 2];
			System.arraycopy(old, 0, buffer, 0, old.length);
		}
		
		if (readPos != readLen)
			throw new IllegalStateException("Can not read to buffer when it was not read empty!");
			
		buffer[readPos] = i;
		readPos++;
		readLen++;
	}