/**
 * This function takes in a list of sets and a set to exclude, and returns the intersection of all the sets excluding the elements present in the exclude set.
 */
fun intersectionNot(sets: List<Set<Any>>, exclude: Set<Any>): Set<Any> {

    var intersection = sets.firstOrNull() ?: emptySet()

    // Looping through all the sets in the list
    for (s in sets) {
        // Taking the intersection of the current set with the previous intersection set
        intersection = intersection.intersect(s)
    }

    // Removing the elements present in the exclude set
    intersection = intersection.subtract(exclude)

    return intersection
}
/**
 * This function takes in a list of sets and a set to exclude, and returns the intersection of all the sets excluding the elements present in the exclude set.
 */
fun intersectionNot(sets: List<Set<Any>>, exclude: Set<Any>): Set<Any> {
/**
 * This function takes in a list of sets and a set to exclude, and returns the intersection of all the sets excluding the elements present in the exclude set.
 */
fun intersectionNot(sets: List<Set<Any>>, exclude: Set<Any>): Set<Any> {

    var intersection = sets.firstOrNull() ?: emptySet()

    // Looping through all the sets in the list
    for (s in sets) {
        // Taking the intersection of the current set with the previous intersection set
        intersection = intersection.intersect(s)
    }

    // Removing the elements present in the exclude set
    intersection = intersection.subtract(exclude)

    return intersection
}