uniform object tree traversal