class ContextEmpty extends Context {
    public static Context create(){
        return new ContextEmpty();
    }

    public ContextEmpty(){
        sessionState = new SessionStateEmpty();
    }

    private Object request = null;

    @Override
    public Object request() {
        return request;
    }

    public ContextEmpty request(Object request){
        this.request = request;
        return this;
    }


    @Override
    public String remoteIp() {
        return null;
    }

    @Override
    public int remotePort() {
        return 0;
    }

    @Override
    public String method() {
        return null;
    }

    @Override
    public String protocol() {
        return null;
    }

    @Override
    public URI uri() {
        return null;
    }

    @Override
    public boolean isSecure() {
        return false;
    }

    @Override
    public String url() {
        return null;
    }

    @Override
    public long contentLength() {
        return 0;
    }

    @Override
    public String contentType() {
        return null;
    }

    @Override
    public String contentCharset() {
        return null;
    }

    @Override
    public String queryString() {
        return null;
    }

    @Override
    public InputStream bodyAsStream() throws IOException {
        return null;
    }

    private NvMap paramMap = null;
    @Override
    public NvMap paramMap() {
        if(paramMap == null){
            paramMap = new NvMap();
        }
        return paramMap;
    }

    Map<String, List<String>> paramsMap = null;
    @Override
    public Map<String, List<String>> paramsMap() {
        if(paramsMap == null){
            paramsMap = new IgnoreCaseMap<>();
        }
        return paramsMap;
    }

    Map<String, List<UploadedFile>> filesMap = null;
    @Override
    public Map<String, List<UploadedFile>> filesMap() throws IOException {<FILL_FUNCTION_BODY>}

    @Override
    public void filesDelete() throws IOException{

    }


    @Override
    public String cookie(String key) {
        return cookieMap().get(key);
    }

    @Override
    public String cookie(String key, String def) {
        return cookieMap().getOrDefault(key,def);
    }

    NvMap cookieMap = null;
    @Override
    public NvMap cookieMap() {
        if(cookieMap == null){
            cookieMap = new NvMap();
        }
        return cookieMap;
    }

    private NvMap headerMap = null;
    @Override
    public NvMap headerMap() {
        if(headerMap == null){
            headerMap = new NvMap();
        }
        return headerMap;
    }

    private Map<String, List<String>> headersMap;
    @Override
    public Map<String, List<String>> headersMap() {
        if (headersMap == null) {
            headersMap = new LinkedHashMap<>();
        }
        return headersMap;
    }

    @Override
    public String sessionId() {
        return null;
    }

    @Override
    public <T> T session(String name, Class<T> clz) {
        return null;
    }

    @Override
    public <T> T sessionOrDefault(String name, @NonNull T def) {
        return null;
    }

    @Override
    public int sessionAsInt(String name) {
        return 0;
    }

    @Override
    public int sessionAsInt(String name, int def) {
        return 0;
    }

    @Override
    public long sessionAsLong(String name) {
        return 0;
    }

    @Override
    public long sessionAsLong(String name, long def) {
        return 0;
    }

    @Override
    public double sessionAsDouble(String name) {
        return 0;
    }

    @Override
    public double sessionAsDouble(String name, double def) {
        return 0;
    }

    @Override
    public void sessionSet(String name, Object val) {

    }

    @Override
    public void sessionRemove(String name) {

    }

    @Override
    public void sessionClear() {

    }

    private Object response = null;

    @Override
    public Object response() {
        return response;
    }

    public ContextEmpty response(Object response) {
        this.response = response;
        return this;
    }

    @Override
    protected void contentTypeDoSet(String contentType) {

    }

    @Override
    public void output(byte[] bytes) {

    }

    @Override
    public void output(InputStream stream) {

    }

    @Override
    public OutputStream outputStream() {
        return null;
    }

    @Override
    public void outputAsFile(DownloadedFile file) throws IOException {

    }

    @Override
    public void outputAsFile(File file) throws IOException {

    }

    @Override
    public void headerSet(String key, String val) {
        headerMap().put(key,val);
    }

    @Override
    public void headerAdd(String key, String val) {
        headerMap().put(key,val);
    }

    @Override
    public String headerOfResponse(String name) {
        return headerMap().get(name);
    }

    @Override
    public void cookieSet(String key, String val, String domain, String path, int maxAge) {
        cookieMap().put(key,val);
    }

    @Override
    public void redirect(String url, int code) {

    }

    private int status = 200;
    @Override
    public int status() {
        return status;
    }

    @Override
    protected void statusDoSet(int status) {
        this.status = status;
    }

    @Override
    public void flush() throws IOException{

    }

    @Override
    public void close() throws IOException {

    }

    @Override
    public boolean asyncSupported() {
        return false;
    }

    @Override
    public void asyncStart(long timeout, ContextAsyncListener listener)  {
        throw new UnsupportedOperationException();
    }

    @Override
    public void asyncComplete() {
        throw new UnsupportedOperationException();
    }
}

        if (filesMap == null) {
            filesMap = new LinkedHashMap<>();
        }

        return filesMap;
    
<methods>public non-sealed void <init>() ,public java.lang.String accept() ,public org.noear.solon.core.handle.Action action() ,public abstract void asyncComplete() throws java.io.IOException,public abstract void asyncStart(long, org.noear.solon.core.handle.ContextAsyncListener) ,public void asyncStart() ,public abstract boolean asyncSupported() ,public T attr(java.lang.String, T) ,public T attr(java.lang.String) ,public void attrClear() ,public Map<java.lang.String,java.lang.Object> attrMap() ,public T attrOrDefault(java.lang.String, T) ,public void attrSet(java.lang.String, java.lang.Object) ,public void attrSet(Map<java.lang.String,java.lang.Object>) ,public boolean autoMultipart() ,public void autoMultipart(boolean) ,public java.lang.String body() throws java.io.IOException,public java.lang.String body(java.lang.String) throws java.io.IOException,public byte[] bodyAsBytes() throws java.io.IOException,public abstract java.io.InputStream bodyAsStream() throws java.io.IOException,public java.lang.String bodyNew() throws java.io.IOException,public void bodyNew(java.lang.String) ,public void charset(java.lang.String) ,public abstract void close() throws java.io.IOException,public abstract java.lang.String contentCharset() ,public abstract long contentLength() ,public void contentLength(long) ,public abstract java.lang.String contentType() ,public void contentType(java.lang.String) ,public java.lang.String contentTypeNew() ,public java.lang.Object controller() ,public java.lang.String cookie(java.lang.String) ,public java.lang.String cookie(java.lang.String, java.lang.String) ,public abstract org.noear.solon.core.NvMap cookieMap() ,public java.lang.String cookieOrDefault(java.lang.String, java.lang.String) ,public void cookieRemove(java.lang.String) ,public void cookieSet(java.lang.String, java.lang.String) ,public void cookieSet(java.lang.String, java.lang.String, int) ,public void cookieSet(java.lang.String, java.lang.String, java.lang.String, int) ,public abstract void cookieSet(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int) ,public static org.noear.solon.core.handle.Context current() ,public org.noear.solon.core.handle.UploadedFile file(java.lang.String) throws java.io.IOException,public List<org.noear.solon.core.handle.UploadedFile> files(java.lang.String) throws java.io.IOException,public abstract void filesDelete() throws java.io.IOException,public abstract Map<java.lang.String,List<org.noear.solon.core.handle.UploadedFile>> filesMap() throws java.io.IOException,public abstract void flush() throws java.io.IOException,public void forward(java.lang.String) ,public boolean getHandled() ,public java.util.Locale getLocale() ,public boolean getRendered() ,public java.lang.String header(java.lang.String) ,public java.lang.String header(java.lang.String, java.lang.String) ,public abstract void headerAdd(java.lang.String, java.lang.String) ,public abstract org.noear.solon.core.NvMap headerMap() ,public abstract java.lang.String headerOfResponse(java.lang.String) ,public java.lang.String headerOrDefault(java.lang.String, java.lang.String) ,public abstract void headerSet(java.lang.String, java.lang.String) ,public java.lang.String[] headerValues(java.lang.String) ,public abstract Map<java.lang.String,List<java.lang.String>> headersMap() ,public java.lang.String ip() ,public boolean isFormUrlencoded() ,public boolean isMultipart() ,public boolean isMultipartFormData() ,public abstract boolean isSecure() ,public org.noear.solon.core.handle.Handler mainHandler() ,public abstract java.lang.String method() ,public abstract void output(byte[]) ,public abstract void output(java.io.InputStream) ,public void output(java.lang.String) ,public void output(java.lang.Throwable) ,public abstract void outputAsFile(org.noear.solon.core.handle.DownloadedFile) throws java.io.IOException,public abstract void outputAsFile(java.io.File) throws java.io.IOException,public void outputAsHtml(java.lang.String) ,public void outputAsJson(java.lang.String) ,public abstract java.io.OutputStream outputStream() throws java.io.IOException,public java.lang.String param(java.lang.String) ,public java.lang.String param(java.lang.String, java.lang.String) ,public T paramAsBean(Class<T>) ,public java.math.BigDecimal paramAsDecimal(java.lang.String) ,public java.math.BigDecimal paramAsDecimal(java.lang.String, java.math.BigDecimal) ,public double paramAsDouble(java.lang.String) ,public double paramAsDouble(java.lang.String, double) ,public int paramAsInt(java.lang.String) ,public int paramAsInt(java.lang.String, int) ,public long paramAsLong(java.lang.String) ,public long paramAsLong(java.lang.String, long) ,public abstract org.noear.solon.core.NvMap paramMap() ,public java.lang.String paramOrDefault(java.lang.String, java.lang.String) ,public void paramSet(java.lang.String, java.lang.String) ,public java.lang.String[] paramValues(java.lang.String) ,public void paramsAdd(java.lang.String, java.lang.String) ,public abstract Map<java.lang.String,List<java.lang.String>> paramsMap() ,public java.lang.String path() ,public java.lang.String pathAsLower() ,public java.lang.String pathAsUpper() ,public org.noear.solon.core.NvMap pathMap(java.lang.String) ,public void pathNew(java.lang.String) ,public java.lang.String pathNew() ,public abstract java.lang.String protocol() ,public java.lang.String protocolAsUpper() ,public abstract java.lang.String queryString() ,public java.lang.String realIp() ,public void redirect(java.lang.String) ,public abstract void redirect(java.lang.String, int) ,public abstract java.lang.String remoteIp() ,public abstract int remotePort() ,public boolean remoting() ,public void remotingSet(boolean) ,public final void render(java.lang.Object) throws java.lang.Throwable,public final void render(java.lang.String, Map<java.lang.String,?>) throws java.lang.Throwable,public final java.lang.String renderAndReturn(java.lang.Object) throws java.lang.Throwable,public abstract java.lang.Object request() ,public abstract java.lang.Object response() ,public final java.lang.Object session(java.lang.String) ,public abstract T session(java.lang.String, Class<T>) ,public T session(java.lang.String, T) ,public abstract double sessionAsDouble(java.lang.String) ,public abstract double sessionAsDouble(java.lang.String, double) ,public abstract int sessionAsInt(java.lang.String) ,public abstract int sessionAsInt(java.lang.String, int) ,public abstract long sessionAsLong(java.lang.String) ,public abstract long sessionAsLong(java.lang.String, long) ,public abstract void sessionClear() ,public abstract java.lang.String sessionId() ,public abstract T sessionOrDefault(java.lang.String, T) ,public abstract void sessionRemove(java.lang.String) ,public abstract void sessionSet(java.lang.String, java.lang.Object) ,public org.noear.solon.core.handle.SessionState sessionState() ,public void setHandled(boolean) ,public void setLocale(java.util.Locale) ,public void setRendered(boolean) ,public abstract int status() ,public void status(int) ,public void statusSet(int) ,public abstract java.net.URI uri() ,public abstract java.lang.String url() ,public java.lang.String userAgent() <variables>private boolean _remoting,private java.lang.String accept,private boolean allowMultipart,private Map<java.lang.String,java.lang.Object> attrMap,private java.lang.String body,private java.lang.String bodyNew,protected java.nio.charset.Charset charset,private java.lang.String contentTypeNew,public java.lang.Throwable errors,private boolean handled,java.lang.Boolean isFormUrlencoded,java.lang.Boolean isMultipart,java.lang.Boolean isMultipartFormData,private java.util.Locale locale,private java.lang.String path,private java.lang.String pathAsLower,private java.lang.String pathAsUpper,private java.lang.String pathNew,private java.lang.String protocolAsUpper,private java.lang.String realIp,private boolean rendered,public java.lang.Object result,protected org.noear.solon.core.handle.SessionState sessionState