docs: def AND(queryArr,
              exclude = None):
          """
          create a combined query with multiple items on which to perform an AND operation
          @param queryArr: a list of items on which to perform an AND operation. Items can be either a CombinedQuery or BaseQuery instances.
          @param exclude: a instance of BaseQuery, CombinedQuery or None. Used to filter out results matching the other criteria specified in this query
          """
          assert isinstance(queryArr, list), "provided argument as not a list"
          assert len(queryArr) > 0, "queryArr had an empty list"
          q = CombinedQuery()
          q.setQueryParam("$and", [])
          for item in queryArr:
              assert isinstance(item, (CombinedQuery, BaseQuery)), "item in the list was not a CombinedQuery or BaseQuery instance"
              q.getQuery()["$and"].append(item.getQuery())
          if exclude != None:
              assert isinstance(exclude, (CombinedQuery, BaseQuery)), "exclude parameter was not a CombinedQuery or BaseQuery instance"
              q.setQueryParam("$not", exclude.getQuery())
          return q