code: def descendants(self):
          
          for i in self.current_item.items:
              self.move_to(i)
              if i.type == TYPE_COLLECTION:
                  for c in self.children:
                      yield c
              else:
                  yield i
              self.move_up()
docs: Recursively return every dataset below current item.