docs: def visit(self, node):
          """Rewrite original method to use lower-case method, and not "generic" function."""
  
          try:
              # Get the "visit_%s" method, using the lower case version of the rule.
              method = getattr(self, 'visit_%s' % node.expr_name.lower())
          except AttributeError:
              # If the method is not defined, we do nothing for this node.
              return
  
          # Below is untouched code from the original ``visit`` method.
  
          # Call that method, and show where in the tree it failed if it blows up.
          try:
              return method(node, [self.visit(n) for n in node])
          except (VisitationError, UndefinedLabel):
              # Don't catch and re-wrap already-wrapped exceptions.
              raise
          except self.unwrapped_exceptions:
              raise
          except Exception:
              # Catch any exception, and tack on a parse tree so it's easier to
              # see where it went wrong.
              exc_class, exc, trace = sys.exc_info()
              raise VisitationError(exc, exc_class, node).with_traceback(trace)