I recently had to get a new card cancelled and reissued because it was sent to an old address. I definitely updated my address with that bank, but it didn't stick.
I've updated my address with other companies and later found that different parts of their system kept different addresses.
Not too long ago I even worked on the address changing section of a finance company's website. That project was a nightmare, and I learned a lot about why address changes are much harder to implement than you would think.
I really wanted to spend more time ironing out edge cases on that one, but I was under a lot of pressure to get it delivered because some genius had already committed to removing the forms we already used for this.
So basically it's possible this person did change their address, at least for some things with that bank, and fixing it might not be something they can do without just the right specific instruction. As long as the bank can demonstrate a good faith attempt to do it right, they are legally covered. Sometimes it's cheaper to compensate for very rare customer losses that result in edge case fuckups, than to pay developers what it would take to fix it properly.
I can live with decorators in Python (and JavaScript while we're at it) because they're kind of in the spirit of the language. You have a big bag of tools and are trusted to use them responsibly.
I've only had problems when annotations in Java are used to do similar things. At some point you have to admit that all the bypassing of language features means you picked the wrong language, and maybe you don't want rigorous OO purity after all.