Administrar varias versiones de objetos Java serializados

Digamos que tengo un programa que por alguna razón necesito manejar versiones antiguas de objetos serializados.

Por ejemplo: al deserializar, se puede encontrar una de estas versiones.

class Pet {
    private static final long serialVersionUID = 1L;
    int paws;
}

class Pet {
    private static final long serialVersionUID = 2L;
    long paws; // handle marsian centipedes
    boolean sharpTeeth;
}

Supongamos que es (lógicamente) posible convertir un objeto antiguo en un objeto nuevo utilizando una estrategia inteligente para establecer campos no existentes, etc., etc., pero:

¿Cómo organizo mi código fuente? Probablemente necesitaría ambas versiones en el mismo árbol de origen al escribir un convertidor, pero ¿cómo manejo eso en, digamos, eclipse?

¿Debo hacer la deserialización en un cargador de clases, y si eso falla, intente usar otro cargador de clases que use una versión anterior (y así sucesivamente), o hay mejores formas?

¿Cuál es la mejor estrategia?

Respuestas a la pregunta(4)

Su respuesta a la pregunta