Add a depth limit to avoid runaway recursion.