def treeExplore(self, **kwargs):
str_recursePath = '<STR_LIT>'<EOL>str_startPath   = '<STR_LIT:/>'<EOL>f               = None<EOL>ret             = {}<EOL>for key,val in kwargs.items():<EOL><INDENT>if key == '<STR_LIT>':  str_startPath   = val<EOL>if key == '<STR_LIT:f>':          f               = val<EOL><DEDENT>if self.cd(str_startPath)['<STR_LIT:status>']:<EOL><INDENT>ret = f(str_startPath, **kwargs)<EOL>if ret['<STR_LIT:status>']:<EOL><INDENT>for node in self.lstr_lsnode(str_startPath):<EOL><INDENT>if str_startPath == '<STR_LIT:/>': str_recursePath = "<STR_LIT>" % node<EOL>else: str_recursePath = '<STR_LIT>' % (str_startPath, node)<EOL>l_recursePath       = str_recursePath.split('<STR_LIT:/>')<EOL>l_recursePath[<NUM_LIT:0>]    = '<STR_LIT:/>'<EOL>if not l_recursePath in self.l_allPaths:<EOL><INDENT>self.l_allPaths.append(l_recursePath)<EOL><DEDENT>kwargs['<STR_LIT>'] = str_recursePath<EOL>self.treeExplore(**kwargs)<EOL><DEDENT><DEDENT><DEDENT>else: ret['<STR_LIT:status>']  = False<EOL>return ret<EOL>
Recursively walk through a C_stree, applying a passed function
at each node. The actual "walk" uses individual nodes' internal
child dictionaries.

It is assumed that the start origin of exploration can in fact
be reached by a 'cd()' call. Directories are added to the internal
l_allPaths list variable as they are discovered.

kwargs:
    startPath=<startPath> :     The starting point in the tree
    func=<f> :                  The function to apply at each node

    Additional kwargs are passed to <f>

<f> is a function that is called on a node path. It is of form:

    f(path, **kwargs)

where path is a node in the tree space.

<f> must return a dictionary containing at least one field:

    { "status": True | False }

This same dictionary is also returned out to the caller of this
function.