def update_reservation(
        self,
        reservation_id: str,
        start_time: datetime.datetime | None = None,
        end_time: datetime.datetime | None = None,
        whitelisted_users: list[str] | None = None,
    ) -> None:
        """Updates a reservation with new information.

        Updates a reservation with a new start date, end date, or
        list of additional users.  For each field, it the argument is left as
        None, it will not be updated.

        Args:
            reservation_id: The string identifier of the reservation to change.
            start_time: New starting time  of the reservation.  If unspecified,
                starting time is left unchanged.
            end_time: New ending time  of the reservation.  If unspecified,
                ending time is left unchanged.
            whitelisted_users: The new list of whitelisted users to allow on
                the reservation.  If unspecified, the users are left unchanged.

        Raises:
            ValueError: if reservation_id does not exist.
        """
        if reservation_id not in self._reservations:
            raise ValueError(f'Reservation id {reservation_id} does not exist.')
        if start_time is not None:
            self._reservations[reservation_id].start_time = datetime.datetime.fromtimestamp(
                _to_timestamp(start_time)
            )
        if end_time is not None:
            self._reservations[reservation_id].end_time = datetime.datetime.fromtimestamp(
                _to_timestamp(end_time)
            )
        if whitelisted_users is not None:
            del self._reservations[reservation_id].whitelisted_users[:]
            self._reservations[reservation_id].whitelisted_users.extend(whitelisted_users)
Updates a reservation with new information.

        Updates a reservation with a new start date, end date, or
        list of additional users.  For each field, it the argument is left as
        None, it will not be updated.

        Args:
            reservation_id: The string identifier of the reservation to change.
            start_time: New starting time  of the reservation.  If unspecified,
                starting time is left unchanged.
            end_time: New ending time  of the reservation.  If unspecified,
                ending time is left unchanged.
            whitelisted_users: The new list of whitelisted users to allow on
                the reservation.  If unspecified, the users are left unchanged.

        Raises:
            ValueError: if reservation_id does not exist.
        
cirq-google/cirq_google/engine/abstract_local_processor.py