code: def _get_meaning(value_pb, is_list=False):
      
      meaning = None
      if is_list:
          # An empty list will have no values, hence no shared meaning
          # set among them.
          if len(value_pb.array_value.values) == 0:
              return None
  
          # We check among all the meanings, some of which may be None,
          # the rest which may be enum/int values.
          all_meanings = [
              _get_meaning(sub_value_pb) for sub_value_pb in value_pb.array_value.values
          ]
          unique_meanings = set(all_meanings)
          if len(unique_meanings) == 1:
              # If there is a unique meaning, we preserve it.
              meaning = unique_meanings.pop()
          else:  # We know len(value_pb.array_value.values) > 0.
              # If the meaning is not unique, just return all of them.
              meaning = all_meanings
      elif value_pb.meaning:  # Simple field (int32).
          meaning = value_pb.meaning
  
      return meaning
docs: Get the meaning from a protobuf value.
  
      :type value_pb: :class:`.entity_pb2.Value`
      :param value_pb: The protobuf value to be checked for an
                       associated meaning.
  
      :type is_list: bool
      :param is_list: Boolean indicating if the ``value_pb`` contains
                      a list value.
  
      :rtype: int
      :returns: The meaning for the ``value_pb`` if one is set, else
                :data:`None`. For a list value, if there are disagreeing
                means it just returns a list of meanings. If all the
                list meanings agree, it just condenses them.