Multidimensional methods construct arrays of objects with special attention to c-arrays. In that case, each c-array is recursively built to make sure each element is destroyed in the reverse order of creation. This patch simplifies this task by treating C elements of T[N][M] as C*N*M elements of T. This prevents the recursion, using only a single guard. Arguably, it makes the code easier to read and better codegen.
(Added as reviewers the same list of https://reviews.llvm.org/D62641 which introduced these methods. I hope that's fine)
Why not is_bounded_array?