async def update_reservation_async(
        self,
        project_id: str,
        processor_id: str,
        reservation_id: str,
        start: datetime.datetime | None = None,
        end: datetime.datetime | None = None,
        whitelisted_users: list[str] | None = None,
    ):
        """Updates a quantum reservation.

        This will update a quantum reservation's starting time, ending time,
        and list of whitelisted users.  If any field is not filled, it will
        not be updated.

        Args:
            project_id: A project_id of the parent Google Cloud Project.
            processor_id: The processor unique identifier.
            reservation_id: Unique ID of the reservation in the parent project,
            start: the new starting time of the reservation as a datetime object
            end: the new ending time of the reservation as a datetime object
            whitelisted_users: a list of emails that can use the reservation.
                The empty list, [], will clear the whitelisted_users while None
                will leave the value unchanged.
        """
        name = (
            _reservation_name_from_ids(project_id, processor_id, reservation_id)
            if reservation_id
            else ''
        )

        reservation = quantum.QuantumReservation(name=name)
        paths = []
        if start:
            reservation.start_time = start
            paths.append('start_time')
        if end:
            reservation.end_time = end
            paths.append('end_time')
        if whitelisted_users is not None:
            reservation.whitelisted_users.extend(whitelisted_users)
            paths.append('whitelisted_users')

        request = quantum.UpdateQuantumReservationRequest(
            name=name,
            quantum_reservation=reservation,
            update_mask=field_mask_pb2.FieldMask(paths=paths),
        )
        return await self._send_request_async(self.grpc_client.update_quantum_reservation, request)
Updates a quantum reservation.

        This will update a quantum reservation's starting time, ending time,
        and list of whitelisted users.  If any field is not filled, it will
        not be updated.

        Args:
            project_id: A project_id of the parent Google Cloud Project.
            processor_id: The processor unique identifier.
            reservation_id: Unique ID of the reservation in the parent project,
            start: the new starting time of the reservation as a datetime object
            end: the new ending time of the reservation as a datetime object
            whitelisted_users: a list of emails that can use the reservation.
                The empty list, [], will clear the whitelisted_users while None
                will leave the value unchanged.
        
cirq-google/cirq_google/engine/engine_client.py