move parameters to constructor
Invert early conditions
Move preconditions to constructor.
name the metadata variable and the blockLimit
BlockLimit should be initialized in constructor.

Separate findNextBlock from the initial block search.
Simplify getting the initial block
Start giving the variables some meaningful names
Simplify hitSide calculation
remove a seemingly redundant Vec3
rename some block/metadata related variables.
Identified booleans as flags for if you're not moving along a particular axis.
Move to c# coding convension for fields to help me visualise what changes between loops.
Implement Iterator<MovingObjectPosition>
Remove Loop and implement as part of hasNext() and next()
rewind findNextBlock during hasNext to behave like a proper iterator.
Remove some unneccessary casting.
Various stuff to attempt to replicate the normal behaviour