code: def pbs_for_update(document_path, field_updates, option):
      
      extractor = DocumentExtractorForUpdate(field_updates)
  
      if extractor.empty_document:
          raise ValueError("Cannot update with an empty document.")
  
      if option is None:  # Default is to use ``exists=True``.
          option = ExistsOption(exists=True)
  
      write_pbs = []
  
      if extractor.field_paths or extractor.deleted_fields:
          update_pb = extractor.get_update_pb(document_path)
          option.modify_write(update_pb)
          write_pbs.append(update_pb)
  
      if extractor.has_transforms:
          transform_pb = extractor.get_transform_pb(document_path)
          if not write_pbs:
              # NOTE: set the write option on the ``transform_pb`` only if there
              #       is no ``update_pb``
              option.modify_write(transform_pb)
          write_pbs.append(transform_pb)
  
      return write_pbs
docs: Make ``Write`` protobufs for ``update()`` methods.
  
      Args:
          document_path (str): A fully-qualified document path.
          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:
          List[google.cloud.firestore_v1beta1.types.Write]: One
          or two ``Write`` protobuf instances for ``update()``.