I'd prefer to have writeSplits and readSplits be private, and have the public facing API be just the two apply variants that construct TileIdPartitioner given either an existing splits file or a split generator, respectively.