code: def test_docutil(self):
      """
      Test the docutil docstring copying methodology.
      """
  
      class Visualizer(object):
          def __init__(self):
              """
              This is the correct docstring.
              """
              pass
  
      def undecorated(*args, **kwargs):
          """
          This is an undecorated function string.
          """
          pass
  
      # Test the undecorated string to protect from magic
      assert (
          undecorated.__doc__.strip()
          == "This is an undecorated function string."
      )
  
      # Decorate manually and test the newly decorated return function.
      decorated = docutil(Visualizer.__init__)(undecorated)
      assert (
          decorated.__doc__.strip() == "This is the correct docstring."
      )
  
      # Assert that decoration modifies the original function.
      assert (
          undecorated.__doc__.strip()
          == "This is the correct docstring."
      )
  
      @docutil(Visualizer.__init__)
      def sugar(*args, **kwargs):
          pass
  
      # Assert that syntactic sugar works as expected.
      assert sugar.__doc__.strip() == "This is the correct docstring."
  
imports: from yellowbrick.utils.decorators import *
label_desc: Use image node_id 2 for calling the TestDecorators obj's underlying member method code with example usage: obj.test_docutil() without return types