The names current and previous are confusing here. Can we name them a and b to match what they mean in edits?

One of these (is it previous?) corresponds to the older revision, aka the "A" side of the EditList, and the other matches the newer revision, aka the "B" side of the EditList.

It would be nice if you can make that obvious to the reader. Because I'm confused... and I shouldn't be.

Or better, reuse the exact same names as you have in the build() loop, since this is only called from that method.