Feels weird to do work (I/O) in __init__, though since it's easily nullable not huge issue; I'd still prefer the pattern of creating and then immediately calling populate, which is more explicit about where work gets done.

It looks like you don't even use `initial_case_ids` below anyway