code: def islice(self, start=None, stop=None, reverse=False):
          
          _len = self._len
  
          if not _len:
              return iter(())
  
          start, stop, step = self._slice(slice(start, stop))
  
          if start >= stop:
              return iter(())
  
          _pos = self._pos
  
          min_pos, min_idx = _pos(start)
  
          if stop == _len:
              max_pos = len(self._lists) - 1
              max_idx = len(self._lists[-1])
          else:
              max_pos, max_idx = _pos(stop)
  
          return self._islice(min_pos, min_idx, max_pos, max_idx, reverse)
docs: Returns an iterator that slices `self` from `start` to `stop` index,
          inclusive and exclusive respectively.
  
          When `reverse` is `True`, values are yielded from the iterator in
          reverse order.
  
          Both `start` and `stop` default to `None` which is automatically
          inclusive of the beginning and end.