// TODO: refactor to a shared readFully somewhere
	  // (NGramTokenizer does this too):
	  /// <summary>
	  /// commons-io's readFully, but without bugs if offset != 0 </summary>
	  private static int Read(TextReader input, char[] buffer, int offset, int length)
	  {
		Debug.Assert(length >= 0, "length must not be negative: " + length);

		int remaining = length;
		while (remaining > 0)
		{
		  int location = length - remaining;
		  int count = input.read(buffer, offset + location, remaining);
		  if (-1 == count) // EOF
		  {
			break;
		  }
		  remaining -= count;
		}
		return length - remaining;
	  }