code: def augment_visit(linter, checker_method, augmentation):
      
  
      if sys.version_info[0] <= 2:
          checker = get_checker(linter, checker_method.im_class)
      else:
          try:
              checker = get_checker(linter, checker_method.__self__.__class__)
          except AttributeError:
              checker = get_checker(linter, get_class(checker_method.__module__, checker_method.__qualname__))
  
      old_method = getattr(checker, checker_method.__name__)
  
      def augment_func(node):
          def chain():
              old_method(node)
          augmentation(chain, node)
  
      setattr(checker, checker_method.__name__, augment_func)
docs: Augmenting a visit enables additional errors to be raised (although that case is
      better served using a new checker) or to suppress all warnings in certain circumstances.
  
      Augmenting functions should accept a 'chain' function, which runs the checker method
      and possibly any other augmentations, and secondly an Astroid node. "chain()" can be
      called at any point to trigger the continuation of other checks, or not at all to
      prevent any further checking.