CapacityByteArrayOutputStream has a lot of edge cases in the slab growing section, in the writing data across slab boundaries section, and in the heuristics section. Does it make sense to try and cover all these by forcing them to happen? Or instead add tests as bugs are found?