Yes, very definitely the occupants.  I'll accept the documentation could make it clearer, but I think this API actually makes sense: you ask what an entity is targeting, you get a record back.  The record includes the overall voxel, and (if there's an intersection) the face of the hitbox/voxel and the precise location of the intersection on the hitbox/voxel.  Hitbox/voxel being decided by the ``useHitboxes`` parameter.

If you look at a torch (so the torch's hit box is drawn on your client) and do a ``player.getTargetBlock(null, 100, true)``, you'll get back a BlockTargetResult, where:
* ``getBlock()`` gives you the voxel for the torch;
* ``getTargetFace()`` gives you the face of the hit box that you are looking at;
* ``getTargetLocation()`` gives you the precise location where your line of sight intersects the face of the hit box (the face being what ``getTargetFace()`` returns).

If you pass ``false`` instead of ``true`` for ``useHitboxes`` then the above still applies, but for "hit box" read "voxel".

I don't get your comment about making the predicate accept a BlockTargetResult at all - what math would plugins need to do here?  All the math is done in the implementation - look at my CraftLivingEntity changes in the CB PR.