class_docstr: Abstract base class for protocol messages.
  
  Protocol message classes are almost always generated by the protocol
  compiler.  These generated types subclass Message and implement the methods
  shown below.
  
  TODO(robinson): Link to an HTML document here.
  
  TODO(robinson): Document that instances of this class will also
  have an Extensions attribute with __getitem__ and __setitem__.
  Again, not sure how to best convey this.
  
  TODO(robinson): Document that the class must also have a static
    RegisterExtension(extension_field) method.
    Not sure how to best express at this point.
class_docstr_tok: ["Abstract","base","class","for","protocol","messages",".","Protocol","message","classes","are","almost","always","generated","by","the","protocol","compiler",".","These","generated","types","subclass","Message","and","implement","the","methods","shown","below",".","TODO","(","robinson",")",":","Link","to","an","HTML","document","here",".","TODO","(","robinson",")",":","Document","that","instances","of","this","class","will","also","have","an","Extensions","attribute","with","__getitem__","and","__setitem__",".","Again",",","not","sure","how","to","best","convey","this",".","TODO","(","robinson",")",":","Document","that","the","class","must","also","have","a","static","RegisterExtension","(","extension_field",")","method",".","Not","sure","how","to","best","express","at","this","point","."]
docstr: Merges serialized protocol buffer data into this message.
  
  When we find a field in |serialized| that is already present
  in this message:
    - If it's a "repeated" field, we append to the end of our list.
    - Else, if it's a scalar, we overwrite our field.
    - Else, (it's a nonrepeated composite), we recursively merge
      into the existing composite.
  
  TODO(robinson): Document handling of unknown fields.
  
  Args:
    serialized: Any object that allows us to call buffer(serialized)
      to access a string of bytes using the buffer interface.
  
  TODO(robinson): When we switch to a helper, this will return None.
  
  Returns:
    The number of bytes read from |serialized|.
    For non-group messages, this will always be len(serialized),
    but for messages which are actually groups, this will
    generally be less than len(serialized), since we must
    stop when we reach an END_GROUP tag.  Note that if
    we *do* stop because of an END_GROUP tag, the number
    of bytes returned does not include the bytes
    for the END_GROUP tag information.
docstr_tok: ["Merges","serialized","protocol","buffer","data","into","this","message",".","When","we","find","a","field","in","|serialized|","that","is","already","present","in","this","message",":","-","If","it","'s","a","``","repeated","''","field",",","we","append","to","the","end","of","our","list",".","-","Else",",","if","it","'s","a","scalar",",","we","overwrite","our","field",".","-","Else",",","(","it","'s","a","nonrepeated","composite",")",",","we","recursively","merge","into","the","existing","composite",".","TODO","(","robinson",")",":","Document","handling","of","unknown","fields",".","Args",":","serialized",":","Any","object","that","allows","us","to","call","buffer","(","serialized",")","to","access","a","string","of","bytes","using","the","buffer","interface",".","TODO","(","robinson",")",":","When","we","switch","to","a","helper",",","this","will","return","None",".","Returns",":","The","number","of","bytes","read","from","|serialized|",".","For","non-group","messages",",","this","will","always","be","len","(","serialized",")",",","but","for","messages","which","are","actually","groups",",","this","will","generally","be","less","than","len","(","serialized",")",",","since","we","must","stop","when","we","reach","an","END_GROUP","tag",".","Note","that","if","we","*","do","*","stop","because","of","an","END_GROUP","tag",",","the","number","of","bytes","returned","does","not","include","the","bytes","for","the","END_GROUP","tag","information","."]
code: def MergeFromString(self, serialized):
      """Merges serialized protocol buffer data into this message.
  
      When we find a field in |serialized| that is already present
      in this message:
        - If it's a "repeated" field, we append to the end of our list.
        - Else, if it's a scalar, we overwrite our field.
        - Else, (it's a nonrepeated composite), we recursively merge
          into the existing composite.
  
      TODO(robinson): Document handling of unknown fields.
  
      Args:
        serialized: Any object that allows us to call buffer(serialized)
          to access a string of bytes using the buffer interface.
  
      TODO(robinson): When we switch to a helper, this will return None.
  
      Returns:
        The number of bytes read from |serialized|.
        For non-group messages, this will always be len(serialized),
        but for messages which are actually groups, this will
        generally be less than len(serialized), since we must
        stop when we reach an END_GROUP tag.  Note that if
        we *do* stop because of an END_GROUP tag, the number
        of bytes returned does not include the bytes
        for the END_GROUP tag information.
      """
      raise NotImplementedError
  
label_desc: Use image node_id 12 for calling the Message obj's underlying member method code with example usage: obj.MergeFromString(serialized) without return types