> Am I missing something?

Code like this is perfectly correct and has no ambiguous intent:
```d
Object o;
if (cond)
    o = a;
else
    o = b;
```
(simplified)

Adding an ` = null` initializer here that is never used would make it unclear, both to the reader and the compiler. That's what definite-assignment analysis is about - if a local variable doesn't have an initializer (sans struct/union variables), you can rest assured that it's initialized somewhere later in the method *before* being used. It is exactly the same problem that D's default initializers attempt to solve, but while D's way is only detectable at runtime, flow analysis pushes error messages to compile-time.