When the caller installs the hook, they are able to include an "extraData" parameter that uniquely identifies the hook callback. In this case, the VoxelSystem installs the hook with a pointer to itself. And so each voxel system gets its own unique callback, and therefore can handle the hooks independently.

I don't disagree that it might be useful to make VoxelSystem::freeBufferIndex() virtual and allow different derivations to have their own implementations. But in the case of our existing voxel system implementations they seem to work correctly with this implementation.