code: def remove(self, delete=True):
          
          if self.state >= library.MachineState.running:
              session = virtualbox.Session()
              self.lock_machine(session, library.LockType.shared)
              try:
                  progress = session.console.power_down()
                  progress.wait_for_completion(-1)
              except Exception:
                  print("Error powering off machine", file=sys.stderr)
              session.unlock_machine()
              time.sleep(0.5)  # TODO figure out how to ensure session is really unlocked...
  
          settings_dir = os.path.dirname(self.settings_file_path)
          if delete:
              option = library.CleanupMode.detach_all_return_hard_disks_only
          else:
              option = library.CleanupMode.detach_all_return_none
          media = self.unregister(option)
          if delete:
              progress = self.delete_config(media)
              progress.wait_for_completion(-1)
              media = []
  
          # if delete - At some point in time virtualbox didn't do a full cleanup
          #             of this dir. Let's double check it has been cleaned up.
          if delete and os.path.exists(settings_dir):
              shutil.rmtree(settings_dir)
  
          return media
docs: Unregister and optionally delete associated config
  
          Options:
              delete - remove all elements of this VM from the system
  
          Return the IMedia from unregistered VM