Unexpected type instability with getproperty but not setproperty!

I would have expected the other branches to be eliminated since :value is a compile time constant, re Stefan’s comment here How to use `getproperty`/`setproperty!`?.

For example:

const branch = true
example() = branch ? 0.0 : 0
@code_warntype example()

example() “looks” type unstable, but the compiler correctly eliminates the branch and then infers the type, meaning no type instability.

Body::Float64
1 ─     return 0.0

I’m asking why the same isn’t happening here, since (I think) :value is a compile time constant.