docs: def _contains_array(self, val):
          """Checks whether exactly this array is in the list"""
          arr = self(arr_name=val.psy.arr_name)[0]
          is_not_list = any(
              map(lambda a: not isinstance(a, InteractiveList),
                  [arr, val]))
          is_list = any(map(lambda a: isinstance(a, InteractiveList),
                            [arr, val]))
          # if one is an InteractiveList and the other not, they differ
          if is_list and is_not_list:
              return False
          # if both are interactive lists, check the lists
          if is_list:
              return all(a in arr for a in val) and all(a in val for a in arr)
          # else we check the shapes and values
          return arr is val