// Path: src/main/java/org/skyscreamer/jsonassert/comparator/JSONComparator.java
// public interface JSONComparator {
// 
//     /**
//      * Compares two {@link JSONObject}s and returns the result of the comparison in a {@link JSONCompareResult} object.
//      *
//      * @param expected the expected JSON object
//      * @param actual   the actual JSON object
//      * @return the result of the comparison
//      * @throws JSONException JSON parsing error
//      */
//     JSONCompareResult compareJSON(JSONObject expected, JSONObject actual) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONArray}s and returns the result of the comparison in a {@link JSONCompareResult} object.
//      *
//      * @param expected the expected JSON array
//      * @param actual   the actual JSON array
//      * @return the result of the comparison
//      * @throws JSONException JSON parsing error
//      */
//     JSONCompareResult compareJSON(JSONArray expected, JSONArray actual) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONObject}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix   the path in the json where the comparison happens
//      * @param expected the expected JSON object
//      * @param actual   the actual JSON object
//      * @param result   stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareJSON(String prefix, JSONObject expected, JSONObject actual, JSONCompareResult result) throws JSONException;
// 
//     /**
//      * Compares two {@link Object}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix        the path in the json where the comparison happens
//      * @param expectedValue the expected value
//      * @param actualValue   the actual value
//      * @param result        stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareValues(String prefix, Object expectedValue, Object actualValue, JSONCompareResult result) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONArray}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix   the path in the json where the comparison happens
//      * @param expected the expected JSON array
//      * @param actual   the actual JSON array
//      * @param result   stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareJSONArray(String prefix, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException;
// }


import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.skyscreamer.jsonassert.comparator.JSONComparator;
        assertNotEquals("", expectedStr, actualStr, compareMode);
    }
    
    /**
     * Asserts that the JSONArray provided does not match the expected string.  If it is it throws an
     * {@link AssertionError}.
     * 
     * @param message Error message to be displayed in case of assertion failure
     * @param expectedStr Expected JSON string
     * @param actualStr String to compare
     * @param compareMode Specifies which comparison mode to use
     * @throws JSONException JSON parsing error
     */
    public static void assertNotEquals(String message, String expectedStr, String actualStr, JSONCompareMode compareMode)
        throws JSONException {
        JSONCompareResult result = JSONCompare.compareJSON(expectedStr, actualStr, compareMode);
        if (result.passed()) {
            throw new AssertionError(getCombinedMessage(message, result.getMessage()));
        }
    }

    /**
     * Asserts that the json string provided matches the expected string.  If it isn't it throws an
     * {@link AssertionError}.
     *
     * @param expectedStr Expected JSON string
     * @param actualStr String to compare
     * @param comparator Comparator
     * @throws JSONException JSON parsing error
     */
// Path: src/main/java/org/skyscreamer/jsonassert/comparator/JSONComparator.java
// public interface JSONComparator {
// 
//     /**
//      * Compares two {@link JSONObject}s and returns the result of the comparison in a {@link JSONCompareResult} object.
//      *
//      * @param expected the expected JSON object
//      * @param actual   the actual JSON object
//      * @return the result of the comparison
//      * @throws JSONException JSON parsing error
//      */
//     JSONCompareResult compareJSON(JSONObject expected, JSONObject actual) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONArray}s and returns the result of the comparison in a {@link JSONCompareResult} object.
//      *
//      * @param expected the expected JSON array
//      * @param actual   the actual JSON array
//      * @return the result of the comparison
//      * @throws JSONException JSON parsing error
//      */
//     JSONCompareResult compareJSON(JSONArray expected, JSONArray actual) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONObject}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix   the path in the json where the comparison happens
//      * @param expected the expected JSON object
//      * @param actual   the actual JSON object
//      * @param result   stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareJSON(String prefix, JSONObject expected, JSONObject actual, JSONCompareResult result) throws JSONException;
// 
//     /**
//      * Compares two {@link Object}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix        the path in the json where the comparison happens
//      * @param expectedValue the expected value
//      * @param actualValue   the actual value
//      * @param result        stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareValues(String prefix, Object expectedValue, Object actualValue, JSONCompareResult result) throws JSONException;
// 
//     /**
//      * Compares two {@link JSONArray}s on the provided path represented by {@code prefix} and
//      * updates the result of the comparison in the {@code result} {@link JSONCompareResult} object.
//      *
//      * @param prefix   the path in the json where the comparison happens
//      * @param expected the expected JSON array
//      * @param actual   the actual JSON array
//      * @param result   stores the actual state of the comparison result
//      * @throws JSONException JSON parsing error
//      */
//     void compareJSONArray(String prefix, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException;
// }


// Path: src/main/java/org/skyscreamer/jsonassert/JSONAssert.java
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.skyscreamer.jsonassert.comparator.JSONComparator;

        assertNotEquals("", expectedStr, actualStr, compareMode);
    }
    
    /**
     * Asserts that the JSONArray provided does not match the expected string.  If it is it throws an
     * {@link AssertionError}.
     * 
     * @param message Error message to be displayed in case of assertion failure
     * @param expectedStr Expected JSON string
     * @param actualStr String to compare
     * @param compareMode Specifies which comparison mode to use
     * @throws JSONException JSON parsing error
     */
    public static void assertNotEquals(String message, String expectedStr, String actualStr, JSONCompareMode compareMode)
        throws JSONException {
        JSONCompareResult result = JSONCompare.compareJSON(expectedStr, actualStr, compareMode);
        if (result.passed()) {
            throw new AssertionError(getCombinedMessage(message, result.getMessage()));
        }
    }

    /**
     * Asserts that the json string provided matches the expected string.  If it isn't it throws an
     * {@link AssertionError}.
     *
     * @param expectedStr Expected JSON string
     * @param actualStr String to compare
     * @param comparator Comparator
     * @throws JSONException JSON parsing error
     */
    public static void assertEquals(String expectedStr, String actualStr, JSONComparator comparator)