// Path: ersatz/src/main/java/io/github/cjstehno/ersatz/cfg/ContentType.java
// public static final ContentType TEXT_PLAIN = new ContentType("text/plain");


import static java.nio.charset.StandardCharsets.UTF_8;
import lombok.val;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.UploadContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.function.BiFunction;
import static io.github.cjstehno.ersatz.cfg.ContentType.TEXT_PLAIN;
import static java.net.URLDecoder.decode;

                @Override
                public String getCharacterEncoding() {
                    return ctx.getCharacterEncoding();
                }

                @Override
                public String getContentType() {
                    return ctx.getContentType();
                }

                @Override
                public int getContentLength() {
                    return (int) ctx.getContentLength();
                }

                @Override
                public InputStream getInputStream() throws IOException {
                    return new ByteArrayInputStream(content);
                }
            });
        } catch (final Exception e) {
            throw new IllegalArgumentException(e.getMessage());
        }

        val multipartRequest = new MultipartRequestContent();

        parts.forEach(part -> {
            val partCtx = new DecodingContext(part.getSize(), part.getContentType(), null, ctx.getDecoderChain());

            if (part.isFormField()) {

// Path: ersatz/src/main/java/io/github/cjstehno/ersatz/cfg/ContentType.java
// public static final ContentType TEXT_PLAIN = new ContentType("text/plain");


// Path: ersatz/src/main/java/io/github/cjstehno/ersatz/encdec/Decoders.java
import static java.nio.charset.StandardCharsets.UTF_8;
import lombok.val;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.UploadContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.function.BiFunction;
import static io.github.cjstehno.ersatz.cfg.ContentType.TEXT_PLAIN;
import static java.net.URLDecoder.decode;

                @Override
                public String getCharacterEncoding() {
                    return ctx.getCharacterEncoding();
                }

                @Override
                public String getContentType() {
                    return ctx.getContentType();
                }

                @Override
                public int getContentLength() {
                    return (int) ctx.getContentLength();
                }

                @Override
                public InputStream getInputStream() throws IOException {
                    return new ByteArrayInputStream(content);
                }
            });
        } catch (final Exception e) {
            throw new IllegalArgumentException(e.getMessage());
        }

        val multipartRequest = new MultipartRequestContent();

        parts.forEach(part -> {
            val partCtx = new DecodingContext(part.getSize(), part.getContentType(), null, ctx.getDecoderChain());

            if (part.isFormField()) {

                multipartRequest.part(part.getFieldName(), TEXT_PLAIN, ctx.getDecoderChain().resolve(TEXT_PLAIN).apply(part.get(), partCtx));
