module/mapping/src/main/java/net/fabricmc/discord/bot/module/mapping/mappinglib/ColumnFileReader.java
public String nextCol(boolean unescape) throws IOException {
		if (eol) return null;

		int start;
		int end = bufferPos;
		int firstEscaped = -1;

		readLoop: for (;;) {
			while (end < bufferLimit) {
				char c = buffer[end];

				if (c == '\t' || c == '\n' || c == '\r') {
					start = bufferPos;
					bufferPos = end;

					if (c == '\t') {
						bufferPos++;
					} else {
						eol = true;
					}

					break readLoop;
				} else if (unescape && c == '\\' && firstEscaped < 0) {
					firstEscaped = bufferPos;
				}

				end++;
			}

			int oldStart = bufferPos;
			boolean filled = fillBuffer(end - bufferPos + 1);
			int posShift = bufferPos - oldStart; // fillBuffer may compact the data, shifting it to the buffer start
			assert posShift <= 0;
			end += posShift;
			if (firstEscaped >= 0) firstEscaped += posShift;

			if (!filled) {
				start = bufferPos;
				bufferPos = end;
				eol = true;
				break;
			}
		}

		int len = end - start;

		if (len == 0) {
			return "";
		} else if (firstEscaped >= 0) {
			return Tiny2Util.unescape(String.valueOf(buffer, start, len));
		} else {
			return String.valueOf(buffer, start, len);
		}
	}
/**
	 * Read and consume a column and unescape it if requested.
	 */
Read and consume a column and unescape it if requested.
Read and consume a column and unescape it if requested .
public String nextCol(boolean unescape) throws IOException {
		if (eol) return null;
		int start;
		int end = bufferPos;
		int firstEscaped = -1;
		readLoop: for (;;) {
			while (end < bufferLimit) {
				char c = buffer[end];
				if (c == '\t' || c == '\n' || c == '\r') {
					start = bufferPos;
					bufferPos = end;
					if (c == '\t') {
						bufferPos++;
					} else {
						eol = true;
					}
					break readLoop;
				} else if (unescape && c == '\\' && firstEscaped < 0) {
					firstEscaped = bufferPos;
				}
				end++;
			}
			int oldStart = bufferPos;
			boolean filled = fillBuffer(end - bufferPos + 1);
			int posShift = bufferPos - oldStart; 
			assert posShift <= 0;
			end += posShift;
			if (firstEscaped >= 0) firstEscaped += posShift;
			if (!filled) {
				start = bufferPos;
				bufferPos = end;
				eol = true;
				break;
			}
		}
		int len = end - start;
		if (len == 0) {
			return "";
		} else if (firstEscaped >= 0) {
			return Tiny2Util.unescape(String.valueOf(buffer, start, len));
		} else {
			return String.valueOf(buffer, start, len);
		}
	}
public String nextCol ( boolean unescape ) throws IOException { if ( eol ) return null ; int start ; int end = bufferPos ; int firstEscaped = - 1 ; readLoop : for ( ; ; ) { while ( end < bufferLimit ) { char c = buffer [ end ] ; if ( c == '\t' || c == '\n' || c == '\r' ) { start = bufferPos ; bufferPos = end ; if ( c == '\t' ) { bufferPos ++ ; } else { eol = true ; } break readLoop ; } else if ( unescape && c == '\\' && firstEscaped < 0 ) { firstEscaped = bufferPos ; } end ++ ; } int oldStart = bufferPos ; boolean filled = fillBuffer ( end - bufferPos + 1 ) ; int posShift = bufferPos - oldStart ; assert posShift <= 0 ; end += posShift ; if ( firstEscaped >= 0 ) firstEscaped += posShift ; if ( ! filled ) { start = bufferPos ; bufferPos = end ; eol = true ; break ; } } int len = end - start ; if ( len == 0 ) { return "" ; } else if ( firstEscaped >= 0 ) { return Tiny2Util . unescape ( String . valueOf ( buffer , start , len ) ) ; } else { return String . valueOf ( buffer , start , len ) ; } }
Read and consume a column and unescape it if requested.
Read and consume a column and unescape it if requested .
// fillBuffer may compact the data, shifting it to the buffer start