Added type annotations where necessary so Protected<_> is used throughout the code instead of Choice<_,_>.