It's obviously not the first choice. Other ideas was to make an interface object "Dirnode" that handles the actual user interface (indexing, indices, values, sizeof) and have "dirnode" as internal object. Another to return an "internal" object by some secret handshake (e.g. [""]). Both of these however needs more objects. The first one two per module and the second one would create one for every internal peek into the object.
Hopefully most people spend their time writing other things than resolvers, so the tradeoff "more difficult to write resolver"/"easier writing non-resolvers" feels right to me.