private void processBuffer(byte[] buffer, List<Token> tokens,
			TokenGenerator tokenGenerator, ZipEntry zipEntry) {
		tokenGenerator.setBuffer(buffer);

		final int length = tokenGenerator.length();
		int row = 1, column = 0;
		int i = 0;
		while (i < length) {
			char c = tokenGenerator.charAt(i++);
			++column;

			if (c == '\n') {
				++row;
				column = 0;
			} else if (Character.isJavaIdentifierStart(c)) {
				int tokenStartI = i;
				while (i < length - 1) {
					c = tokenGenerator.charAt(++i);
					column++;
					if (!Character.isJavaIdentifierPart(c)) {
						break;
					}
				}
				tokens.add(new Token(row, column, tokenGenerator.subSequence(
						tokenStartI, i), zipEntry));
			} else {
				while (i < length - 1) {
					c = tokenGenerator.charAt(++i);
					column++;
					if (Character.isJavaIdentifierStart(c)
							|| Character.isWhitespace(c)) {
						break;
					}
				}
			}
		}

	}