each flush region has a left write and a right write. these are passed to the constructor.
a flush can happen two ways: 1 - new flush. starts with nothing in it. adds only writes. 2 - old flush. starts with a previous flush and no writes. new writes can break up the reference to the previous flush.
