allocate has to return the new segment builder