def traverse_using(iterator, obj, visitors):
 for target in iterator:
  meth = visitors.get(target.__visit_name__, None)
  if meth:
   meth(target)
 return obj

def traverse_using ( iterator , obj , visitors ) : for target in iterator : meth = visitors . get ( target . __visit_name__ , None ) if meth : meth ( target ) return obj
visit the given expression structure using the given iterator of objects .