Why is the offsetArr size based on the estimated size? Can't we size it like this: Bytes.SIZEOF_INT * this.children.size()? The offsets might be smaller, but they won't be larger.