def ListFields(self):
    'Returns a list of (FieldDescriptor, value) tuples for present fields.\n\n    A message field is non-empty if HasField() would return true. A singular\n    primitive field is non-empty if HasField() would return true in proto2 or it\n    is non zero in proto3. A repeated field is non-empty if it contains at least\n    one element. The fields are ordered by field number.\n\n    Returns:\n      list[tuple(FieldDescriptor, value)]: field descriptors and values\n      for all fields in the message which are not empty. The values vary by\n      field type.\n    '
    raise NotImplementedError
Returns a list of (FieldDescriptor, value) tuples for present fields.

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.

Returns:
  list[tuple(FieldDescriptor, value)]: field descriptors and values
  for all fields in the message which are not empty. The values vary by
  field type.
def ListFields(self):
    'Returns a list of (FieldDescriptor, value) tuples for present fields.\n\n    A message field is non-empty if HasField() would return true. A singular\n    primitive field is non-empty if HasField() would return true in proto2 or it\n    is non zero in proto3. A repeated field is non-empty if it contains at least\n    one element. The fields are ordered by field number.\n\n    Returns:\n      list[tuple(FieldDescriptor, value)]: field descriptors and values\n      for all fields in the message which are not empty. The values vary by\n      field type.\n    '
    raise NotImplementedError