Allowing local variables change types only through the or idiom