// Path: org/jglrxavpok/mods/customai/json/JSONException.java
// public class JSONException extends RuntimeException {
//     private static final long serialVersionUID = 0;
//     private Throwable cause;
// 
//     /**
//      * Constructs a JSONException with an explanatory message.
//      *
//      * @param message
//      *            Detail about the reason for the exception.
//      */
//     public JSONException(String message) {
//         super(message);
//     }
// 
//     /**
//      * Constructs a new JSONException with the specified cause.
//      */
//     public JSONException(Throwable cause) {
//         super(cause.getMessage());
//         this.cause = cause;
//     }
// 
//     /**
//      * Returns the cause of this exception or null if the cause is nonexistent
//      * or unknown.
//      *
//      * @returns the cause of this exception or null if the cause is nonexistent
//      *          or unknown.
//      */
//     public Throwable getCause() {
//         return this.cause;
//     }
// }


import org.jglrxavpok.mods.customai.json.JSONException;
        return symbol.integer == integer && i == 0;
    }

    /**
     * Compare two Huffman tables.
     */
    public boolean postMortem(PostMortem pm) {

// Go through every integer in the domain, generating its bit sequence, and
// then proving that that bit sequence produces the same integer.

        for (int integer = 0; integer < this.domain; integer += 1) {
            if (!postMortem(integer)) {
                JSONzip.log("\nBad huff ");
                JSONzip.logchar(integer, integer);
                return false;
            }
        }
        return this.table.postMortem(((Huff) pm).table);
    }

    /**
     * Read bits until a symbol can be identified. The weight of the read
     * symbol will be incremented.
     *
     * @param bitreader
     *            The source of bits.
     * @return The integer value of the symbol.
     * @throws JSONException
     */
// Path: org/jglrxavpok/mods/customai/json/JSONException.java
// public class JSONException extends RuntimeException {
//     private static final long serialVersionUID = 0;
//     private Throwable cause;
// 
//     /**
//      * Constructs a JSONException with an explanatory message.
//      *
//      * @param message
//      *            Detail about the reason for the exception.
//      */
//     public JSONException(String message) {
//         super(message);
//     }
// 
//     /**
//      * Constructs a new JSONException with the specified cause.
//      */
//     public JSONException(Throwable cause) {
//         super(cause.getMessage());
//         this.cause = cause;
//     }
// 
//     /**
//      * Returns the cause of this exception or null if the cause is nonexistent
//      * or unknown.
//      *
//      * @returns the cause of this exception or null if the cause is nonexistent
//      *          or unknown.
//      */
//     public Throwable getCause() {
//         return this.cause;
//     }
// }


// Path: org/jglrxavpok/mods/customai/json/zip/Huff.java
import org.jglrxavpok.mods.customai.json.JSONException;

        return symbol.integer == integer && i == 0;
    }

    /**
     * Compare two Huffman tables.
     */
    public boolean postMortem(PostMortem pm) {

// Go through every integer in the domain, generating its bit sequence, and
// then proving that that bit sequence produces the same integer.

        for (int integer = 0; integer < this.domain; integer += 1) {
            if (!postMortem(integer)) {
                JSONzip.log("\nBad huff ");
                JSONzip.logchar(integer, integer);
                return false;
            }
        }
        return this.table.postMortem(((Huff) pm).table);
    }

    /**
     * Read bits until a symbol can be identified. The weight of the read
     * symbol will be incremented.
     *
     * @param bitreader
     *            The source of bits.
     * @return The integer value of the symbol.
     * @throws JSONException
     */
    public int read(BitReader bitreader) throws JSONException {