Can we change `HasSetter` to take into account `IsReadOnly` or does that break behavior in other places?