This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
It is a bit confusing. I believe you need to override the method in your Address class. You can leave it as protected and just return super.clone() if that's acceptable. Also, bring your salt shaker as I can't recollect ever using protected nor do I use Cloneable so it's entirely possible I'm spewing misinformation as it's not something I generally bother with on either count.