def find_snapshot(self, name_or_id):
        """Returns a snapshot of this machine with the given name or UUID.
        
        Returns a snapshot of this machine with the given UUID.
        A @c null argument can be used to obtain the first snapshot
        taken on this machine. To traverse the whole tree of snapshots
        starting from the root, inspect the root snapshot's
        :py:func:`ISnapshot.children`  attribute and recurse over those children.

        in name_or_id of type str
            What to search for. Name or UUID of the snapshot to find

        return snapshot of type :class:`ISnapshot`
            Snapshot object with the given name.

        raises :class:`VBoxErrorObjectNotFound`
            Virtual machine has no snapshots or snapshot not found.
        
        """
        if not isinstance(name_or_id, basestring):
            raise TypeError("name_or_id can only be an instance of type basestring")
        snapshot = self._call("findSnapshot",
                     in_p=[name_or_id])
        snapshot = ISnapshot(snapshot)
        return snapshot