<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def save_snapshot(self, si, logger, vm_uuid, snapshot_name, save_memory):
 """ Creates a snapshot of the current state of the virtual machine :param vim.ServiceInstance si: py_vmomi service instance :type si: vim.ServiceInstance :param logger: Logger :type logger: cloudshell.core.logger.qs_logger.get_qs_logger :param vm_uuid: UUID of the virtual machine :type vm_uuid: str :param snapshot_name: Snapshot name to save the snapshot to :type snapshot_name: str :param save_memory: Snapshot the virtual machine's memory. Lookup, Yes / No :type save_memory: str """

        vm = self.pyvmomi_service.find_by_uuid(si, vm_uuid)

        snapshot_path_to_be_created = SaveSnapshotCommand._get_snapshot_name_to_be_created(snapshot_name, vm)

        save_vm_memory_to_snapshot = SaveSnapshotCommand._get_save_vm_memory_to_snapshot(save_memory)

        SaveSnapshotCommand._verify_snapshot_uniquness(snapshot_path_to_be_created, vm)

        task = self._create_snapshot(logger, snapshot_name, vm, save_vm_memory_to_snapshot)

        self.task_waiter.wait_for_task(task=task, logger=logger, action_name='Create Snapshot')
        return snapshot_path_to_be_created