code: def _set_pb_meaning_from_entity(entity, name, value, value_pb, is_list=False):
      
      if name not in entity._meanings:
          return
  
      meaning, orig_value = entity._meanings[name]
      # Only add the meaning back to the protobuf if the value is
      # unchanged from when it was originally read from the API.
      if orig_value is not value:
          return
  
      # For lists, we set meaning on each sub-element.
      if is_list:
          if not isinstance(meaning, list):
              meaning = itertools.repeat(meaning)
          val_iter = six.moves.zip(value_pb.array_value.values, meaning)
          for sub_value_pb, sub_meaning in val_iter:
              if sub_meaning is not None:
                  sub_value_pb.meaning = sub_meaning
      else:
          value_pb.meaning = meaning
docs: Add meaning information (from an entity) to a protobuf.
  
      :type entity: :class:`google.cloud.datastore.entity.Entity`
      :param entity: The entity to be turned into a protobuf.
  
      :type name: str
      :param name: The name of the property.
  
      :type value: object
      :param value: The current value stored as property ``name``.
  
      :type value_pb: :class:`.entity_pb2.Value`
      :param value_pb: The protobuf value to add meaning / meanings to.
  
      :type is_list: bool
      :param is_list: (Optional) Boolean indicating if the ``value`` is
                      a list value.