The safety of it's usage comes from nature of nesting of the *Configuration objects.
We don't have any such long nestings that would cause stack overflow.
Only risk I can see are cyclic references back to parent objects, but so far we don't have them and I don't think such thing makes sense in Configuration hierarchy.

Since we just want to guard against stack overflow in case of unforseen configuration hierarchy changes, what about adding just a depth parameter to the reflect method and throw a runtime exception in case it exceeds a certain limit ? (I'll set it to 2 x current max in existing hierarchy) wdyt ?