This is needed because when you work with Messages in python, they will
get converted into native structs, but only if you do access from the
Py_Message. It's a bit hard to explain, but I'll try:
Suppose you have a map "a" which contains a map "b" which contains a
list "c".
When you first accesses "b" map, you do this through "a" which is of
type Py_Message and you'll get back a native Python dict, because of the
conversion code in Py_Message. When you then access the "c" list, you do
this though the native dict, and no Py_Message conversion code is run.
So you then get a raw Py_Message instance ("c"). This instance can't be
traversed etc.. Instead it must be converted to the native type.
However, a better approach would probably be to implement tp_iter so
that list elements can be iterated over.