private JSONObject readObject() throws JSONException {
        JSONObject jsonobject = new JSONObject();
        while (true) {
            if (probe) {
                log();
            }
            String name = read(this.namehuff, this.namehuffext, this.namekeep);
            if (jsonobject.opt(name) != null) {
                throw new JSONException("Duplicate key.");
            }
            jsonobject.put(name, !bit()
                    ? read(this.stringhuff, this.stringhuffext, this.stringkeep)
                    : readValue());
            if (!bit()) {
                return jsonobject;
            }
        }
    }