code: def get_new_index(self):
          
          free_index = next(filterfalse(self.numbers.__contains__, count(0, 1)))
          self.numbers.add(free_index)
          return free_index
docs: Gets the next available index and marks it as in use.
          :return:  An index that is not currently in use