I was thinking about code that is used to migrate from one version to another. For example the code that rewrote the order of the hash values used for Bloom filters. That code was necessary for the version it was coded in. But the next version does not need that code because the next version is not going to read the data from 2 versions prior to itself. So the code could be removed for verson+1.
So, would it have made sense to annotate those methods (and variables) as deprecated since the version they were written in so the methods/variables can be removed in the next version? If so, what I propose is that all transitional methods and variable be marked as deprecated with the version in which they were introduced.