'traverse and visit the given expression structure.'

def traverse(self, obj):

    def replace(elem):
        for v in self._visitor_iterator:
            e = v.replace(elem)
            if (e is not None):
                return e
    return replacement_traverse(obj, self.__traverse_options__, replace)
