This required refactoring some cases where we weren't following the rules for the protected annotation.