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: Returns a list of (FieldDescriptor, value) tuples for all
  fields in the message which are not empty.  A message field is
  non-empty if HasField() would return true. A singular primitive field
  is non-empty if HasField() would return true in proto2 or it is non zero
  in proto3. A repeated field is non-empty if it contains at least one
  element.  The fields are ordered by field number
docstr_tok: ["Returns","a","list","of","(","FieldDescriptor",",","value",")","tuples","for","all","fields","in","the","message","which","are","not","empty",".","A","message","field","is","non-empty","if","HasField","(",")","would","return","true",".","A","singular","primitive","field","is","non-empty","if","HasField","(",")","would","return","true","in","proto2","or","it","is","non","zero","in","proto3",".","A","repeated","field","is","non-empty","if","it","contains","at","least","one","element",".","The","fields","are","ordered","by","field","number"]
code: def ListFields(self):
      """Returns a list of (FieldDescriptor, value) tuples for all
      fields in the message which are not empty.  A message field is
      non-empty if HasField() would return true. A singular primitive field
      is non-empty if HasField() would return true in proto2 or it is non zero
      in proto3. A repeated field is non-empty if it contains at least one
      element.  The fields are ordered by field number"""
      raise NotImplementedError
  
label_desc: Use image node_id 16 for calling the Message obj's underlying member method code with example usage: obj.ListFields() without return types