code: def clone_to(self, target, mode, options):
          
          if not isinstance(target, IMachine):
              raise TypeError("target can only be an instance of type IMachine")
          if not isinstance(mode, CloneMode):
              raise TypeError("mode can only be an instance of type CloneMode")
          if not isinstance(options, list):
              raise TypeError("options can only be an instance of type list")
          for a in options[:10]:
              if not isinstance(a, CloneOptions):
                  raise TypeError(
                          "array can only contain objects of type CloneOptions")
          progress = self._call("cloneTo",
                       in_p=[target, mode, options])
          progress = IProgress(progress)
          return progress
docs: Creates a clone of this machine, either as a full clone (which means
          creating independent copies of the hard disk media, save states and so
          on), or as a linked clone (which uses its own differencing media,
          sharing the parent media with the source machine).
          
          The target machine object must have been created previously with :py:func:`IVirtualBox.create_machine` , and all the settings will be
          transferred except the VM name and the hardware UUID. You can set the
          VM name and the new hardware UUID when creating the target machine. The
          network MAC addresses are newly created for all enabled network
          adapters. You can change that behaviour with the options parameter.
          The operation is performed asynchronously, so the machine object will
          be not be usable until the @a progress object signals completion.
  
          in target of type :class:`IMachine`
              Target machine object.
  
          in mode of type :class:`CloneMode`
              Which states should be cloned.
  
          in options of type :class:`CloneOptions`
              Options for the cloning operation.
  
          return progress of type :class:`IProgress`
              Progress object to track the operation completion.
  
          raises :class:`OleErrorInvalidarg`
              @a target is @c null.