def __init__(self, kernel, itspace, *args, **kwargs):
        base.ParLoop.__init__(self, kernel, itspace, *args, **kwargs)
        # List of arguments with vector-map/iteration-space indexes
        # flattened out
        # Does contain Mat arguments (cause of coloring)
        self.__unwound_args = []
        # List of unique arguments:
        #  - indirect dats with the same dat/map pairing only appear once
        # Does contain Mat arguments
        self.__unique_args = []
        # Argument lists filtered by various criteria
        self._arg_dict = {}
        seen = set()
        c = 0
        for arg in self._actual_args:
            if arg._is_mat:
                for a in arg:
                    self.__unwound_args.append(a)
            elif arg._is_vec_map or arg._uses_itspace:
                for d, m in zip(arg.data, arg.map):
                    for i in range(m.arity):
                        a = d(arg.access, m[i])
                        a.position = arg.position
                        self.__unwound_args.append(a)
            else:
                for a in arg:
                    self.__unwound_args.append(a)

            if arg._is_dat:
                key = (arg.data, arg.map)
                if arg._is_indirect:
                    # Needed for indexing into ind_map/loc_map
                    arg._which_indirect = c
                    if arg._is_vec_map or arg._flatten:
                        c += arg.map.arity
                    elif arg._uses_itspace:
                        c += self._it_space.extents[arg.idx.index]
                    else:
                        c += 1
                if seen not in key:
                    self.__unique_args.append(arg)
                    seen.add(key)
            else:
                self.__unique_args.append(arg)
dataset/ETHPy150Open OP2/PyOP2/pyop2/device.py/ParLoop.__init__/swapped operands of `not in`