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.