code: def take_snapshot(self, name, description, pause):
          
          if not isinstance(name, basestring):
              raise TypeError("name can only be an instance of type basestring")
          if not isinstance(description, basestring):
              raise TypeError("description can only be an instance of type basestring")
          if not isinstance(pause, bool):
              raise TypeError("pause can only be an instance of type bool")
          (progress, id_p) = self._call("takeSnapshot",
                       in_p=[name, description, pause])
          progress = IProgress(progress)
          return (progress, id_p)
docs: Saves the current execution state
          and all settings of the machine and creates differencing images
          for all normal (non-independent) media.
          See :py:class:`ISnapshot`  for an introduction to snapshots.
          
          This method can be called for a PoweredOff, Saved (see
          :py:func:`save_state` ), Running or
          Paused virtual machine. When the machine is PoweredOff, an
          offline snapshot is created. When the machine is Running a live
          snapshot is created, and an online snapshot is created when Paused.
          
          The taken snapshot is always based on the
          :py:func:`current_snapshot` current snapshot
          of the associated virtual machine and becomes a new current snapshot.
          
          
          This method implicitly calls :py:func:`save_settings`  to
          save all current machine settings before taking an offline snapshot.
  
          in name of type str
              Short name for the snapshot.
  
          in description of type str
              Optional description of the snapshot.
  
          in pause of type bool
              Whether the VM should be paused while taking the snapshot. Only
              relevant when the VM is running, and distinguishes between online
              (@c true) and live (@c false) snapshots. When the VM is not running
              the result is always an offline snapshot.
  
          out id_p of type str
              UUID of the snapshot which will be created. Useful for follow-up
              operations after the snapshot has been created.
  
          return progress of type :class:`IProgress`
              Progress object to track the operation completion.
  
          raises :class:`VBoxErrorInvalidVmState`
              Virtual machine currently changing state.