code: def get_changes(self, name, *args):
          
          if not name.startswith("refactor_"):
              raise ValueError("Bad refactoring name {0}".format(name))
          method = getattr(self, name)
          if not method.refactor_notes.get('available', True):
              raise RuntimeError("Method not available")
          return method(*args)
docs: Return a list of changes for the named refactoring action.
  
          Changes are dictionaries describing a single action to be
          taken for the refactoring to be successful.
  
          A change has an action and possibly a type. In the description
          below, the action is before the slash and the type after it.
  
          change: Change file contents
          - file: The path to the file to change
          - contents: The new contents for the file
          - Diff: A unified diff showing the changes introduced
  
          create/file: Create a new file
          - file: The file to create
  
          create/directory: Create a new directory
          - path: The directory to create
  
          move/file: Rename a file
          - source: The path to the source file
          - destination: The path to the destination file name
  
          move/directory: Rename a directory
          - source: The path to the source directory
          - destination: The path to the destination directory name
  
          delete/file: Delete a file
          - file: The file to delete
  
          delete/directory: Delete a directory
          - path: The directory to delete