code: def fetchChildren(self):
          
          assert self._canFetchChildren, "canFetchChildren must be True"
          try:
              childItems = self._fetchAllChildren()
          finally:
              self._canFetchChildren = False # Set to True, even if tried and failed.
  
          return childItems
docs: Fetches children.
  
              The actual work is done by _fetchAllChildren. Descendant classes should typically
              override that method instead of this one.