private static void putRequestMap(Env env,
                                          ArrayValue post,
                                          ArrayValue files,
                                          QuercusHttpServletRequest request,
                                          bool addSlashesToValues,
                                          bool isAllowUploads)
        {
            // this call consumes the inputstream
            Map <String, String[]> map = request.getParameterMap();

            if (map == null)
            {
                return;
            }

            long maxFileSize = Long.MAX_VALUE;

            Value maxFileSizeV = post.get(env.createString("MAX_FILE_SIZE"));

            if (maxFileSizeV.isNull())
            {
                maxFileSize = maxFileSizeV.toLong();
            }

            if (isAllowUploads)
            {
                for (Map.Entry <String, String[]> entry : map.entrySet())
                {
                    string key = entry.getKey();

                    int len = key.length();

                    if (len < 10 || !key.endsWith(".filename"))
                    {
                        continue;
                    }

                    string name = key.substring(0, len - 9);

                    string [] fileNames = request.getParameterValues(name + ".filename");
                    string [] tmpNames  = request.getParameterValues(name + ".file");
                    string [] mimeTypes
                        = request.getParameterValues(name + ".content-type");

                    for (int i = 0; i < fileNames.length; i++)
                    {
                        long fileLength = new FilePath(tmpNames[i]).getLength();

                        addFormFile(env, files, name, fileNames[i], tmpNames[i],
                                    mimeTypes[i],
                                    fileLength,
                                    addSlashesToValues,
                                    maxFileSize);
                    }
                }
            }

            ArrayList <String> keys = new ArrayList <String>();

            keys.addAll(request.getParameterMap().keySet());

            Collections.sort(keys);

            for (String key : keys)
            {
                string [] value = request.getParameterValues(key);

                Post.addFormValue(env, post, key, value, addSlashesToValues, true);
            }
        }