If something has no side effects (e.g. modify property/modify $this/modify ArrayAccess/call get()/set()/echo/throw/die()/modify global), then Phan should be able to infer that fact.
Expect return values of methods with no side effects to be used.
Expect constructors with no side effects to have their values used
If something has no side effects (e.g. modify property/modify $this/modify ArrayAccess/call get()/set()/echo/throw/die()/modify global), then Phan should be able to infer that fact.