I can see how this might make sense for complex parameter handling (e.g. depth), but it seems a bit excessive for such simple things?

Also, `include_siblings` is used multiple times in this method - would you call that method anew every time or simply cache the return value on the first use? (My concern here is not micro-optimizations.)