code: def _MergeMessageField(self, tokenizer, message, field):
      
      is_map_entry = _IsMapEntry(field)
  
      if tokenizer.TryConsume('<'):
        end_token = '>'
      else:
        tokenizer.Consume('{')
        end_token = '}'
  
      if field.label == descriptor.FieldDescriptor.LABEL_REPEATED:
        if field.is_extension:
          sub_message = message.Extensions[field].add()
        elif is_map_entry:
          # pylint: disable=protected-access
          sub_message = field.message_type._concrete_class()
        else:
          sub_message = getattr(message, field.name).add()
      else:
        if field.is_extension:
          sub_message = message.Extensions[field]
        else:
          sub_message = getattr(message, field.name)
        sub_message.SetInParent()
  
      while not tokenizer.TryConsume(end_token):
        if tokenizer.AtEnd():
          raise tokenizer.ParseErrorPreviousToken('Expected "%s".' % (end_token,))
        self._MergeField(tokenizer, sub_message)
  
      if is_map_entry:
        value_cpptype = field.message_type.fields_by_name['value'].cpp_type
        if value_cpptype == descriptor.FieldDescriptor.CPPTYPE_MESSAGE:
          value = getattr(message, field.name)[sub_message.key]
          value.MergeFrom(sub_message.value)
        else:
          getattr(message, field.name)[sub_message.key] = sub_message.value
docs: Merges a single scalar field into a message.
  
      Args:
        tokenizer: A tokenizer to parse the field value.
        message: The message of which field is a member.
        field: The descriptor of the field to be merged.
  
      Raises:
        ParseError: In case of text parsing problems.