// Path: upload-parser-core/src/main/java/com/github/elopteryx/upload/errors/MultipartException.java
// public class MultipartException extends IOException {
// 
//     /**
//      * Public constructor.
//      * @param message The exception message.
//      */
//     public MultipartException(final String message) {
//         super(message);
//     }
// }


import com.github.elopteryx.upload.errors.MultipartException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
                        headers = new Headers();
                        return;
                    } else {
                        subState = -1;
                    }
                }
            }
        }

        private void headerName(final ByteBuffer buffer) throws MultipartException {
            while (buffer.hasRemaining()) {
                final var b = buffer.get();
                if (b == ':') {
                    if (currentString == null || subState != 0) {
                        throw new MultipartException(ERROR_MESSAGE);
                    } else {
                        currentHeaderName = currentString.toString(requestCharset);
                        currentString.reset();
                        subState = 0;
                        state = 2;
                        return;
                    }
                } else if (b == CR) {
                    if (currentString == null) {
                        subState = 1;
                    } else {
                        throw new MultipartException(ERROR_MESSAGE);
                    }
                } else if (b == LF) {
                    if (currentString != null || subState != 1) {
// Path: upload-parser-core/src/main/java/com/github/elopteryx/upload/errors/MultipartException.java
// public class MultipartException extends IOException {
// 
//     /**
//      * Public constructor.
//      * @param message The exception message.
//      */
//     public MultipartException(final String message) {
//         super(message);
//     }
// }


// Path: upload-parser-core/src/main/java/com/github/elopteryx/upload/internal/MultipartParser.java
import com.github.elopteryx.upload.errors.MultipartException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;

                        headers = new Headers();
                        return;
                    } else {
                        subState = -1;
                    }
                }
            }
        }

        private void headerName(final ByteBuffer buffer) throws MultipartException {
            while (buffer.hasRemaining()) {
                final var b = buffer.get();
                if (b == ':') {
                    if (currentString == null || subState != 0) {
                        throw new MultipartException(ERROR_MESSAGE);
                    } else {
                        currentHeaderName = currentString.toString(requestCharset);
                        currentString.reset();
                        subState = 0;
                        state = 2;
                        return;
                    }
                } else if (b == CR) {
                    if (currentString == null) {
                        subState = 1;
                    } else {
                        throw new MultipartException(ERROR_MESSAGE);
                    }
                } else if (b == LF) {
                    if (currentString != null || subState != 1) {
                        throw new MultipartException(ERROR_MESSAGE);