One of the design patterns employed in Jenkins is to provide multiple implmenetations that implement the same contract so that common cases run faster. Think of EnumSet in JDK.
To facilitate this kind of situation, it is desirable for those implmentation-only subtypes (JumboEnumSet vs RegularEnumSet) not to leak into the persisted form.
I added XStreamSerializeAs to achieve this. You put this on the likes of EnumSet, and all subtypes get persisted as EnumSet combined with suitable Converter that instantiates the right subtype, this works well.