How does playcanvas determine the bounding boxes for batches?

I know Max AABB is used to determine the max AABB size for determining the max allowed bounding boxes/volume size per batch within the Batch group. But how does Playcanvas subdivide the objects within the batch groups behind the scenes to provide optimal culling? Do you guys use hiercahical bounding volumes (BVH) or something to ensure a balanced enough tree?