<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update(self, field_updates, option=None):
 """Update an existing document in the Firestore database. By default, this method verifies that the document exists on the server before making updates. A write ``option`` can be specified to override these preconditions. Each key in ``field_updates`` can either be a field name or a **field path** (For more information on **field paths**, see :meth:`~.firestore_v1beta1.client.Client.field_path`.) To illustrate this, consider a document with .. code-block:: python { 'foo': { 'bar': 'baz', }, 'other': True, } stored on the server. If the field name is used in the update: .. code-block:: python then all of ``foo`` will be overwritten on the server and the new value will be .. code-block:: python { 'foo': { 'quux': 800, }, 'other': True, } On the other hand, if a ``.``-delimited **field path** is used in the update: .. code-block:: python then only ``foo.quux`` will be updated on the server and the field ``foo.bar`` will remain intact: .. code-block:: python { 'foo': { 'bar': 'baz', 'quux': 800, }, 'other': True, } .. warning:: A **field path** can only be used as a top-level key in ``field_updates``. To delete / remove a field from an existing document, use the :attr:`~.firestore_v1beta1.transforms.DELETE_FIELD` sentinel. So with the example above, sending .. code-block:: python would update the value on the server to: .. code-block:: python { 'foo': { 'bar': 'baz', }, } To set a field to the current time on the server when the update is received, use the :attr:`~.firestore_v1beta1.transforms.SERVER_TIMESTAMP` sentinel. Sending .. code-block:: python would update the value on the server to: .. code-block:: python { 'foo': { 'bar': 'baz', }, 'other': True, } Args: field_updates (dict):
 Field names or paths to update and values to update with. option (Optional[~.firestore_v1beta1.client.WriteOption]):
 A write option to make assertions / preconditions on the server state of the document before applying changes. Returns: google.cloud.firestore_v1beta1.types.WriteResult: The write result corresponding to the updated document. A write result contains an ``update_time`` field. Raises: ~google.cloud.exceptions.NotFound: If the document does not exist. """

        batch = self._client.batch()
        batch.update(self, field_updates, option=option)
        write_results = batch.commit()
        return _first_write_result(write_results)