i wonder how far you could get without storing array lengths in the list data structure
just always allocate in the next contiguous sequence of memory and subtract the next pointer from this one to get the array length
@ktye match feels like something that could be implemented recursively, but i'll add it in because maybe this could work with various 'starting rosters'