code: def to_list(self, length):
          if length is not None:
              if not isinstance(length, int):
                  raise TypeError('length must be an int, not %r' % length)
              elif length < 0:
                  raise ValueError('length must be non-negative')
          if self._query_flags() & _QUERY_OPTIONS['tailable_cursor']:
              raise pymongo.errors.InvalidOperation(
                  "Can't call to_list on tailable cursor")
          future = self._framework.get_future(self.get_io_loop())
          if not self.alive:
              future.set_result([])
          else:
              the_list = []
              self._framework.add_future(
                  self.get_io_loop(),
                  self._get_more(),
                  self._to_list, length, the_list, future)
          return future