Gracias por las aclaraciones.
Pues creo que puede servirte perfectamente una función como
RedefineProc2. ¿Ya lo probaste?
Aunque no sé si sea la mejor manera de atacar el problema (tendría que ver una muestra de tu código para intentar idear otra forma de resolverlo). Pero de que te funcionará, funcionará.
Si pudieras plasmar lo que has dicho en una jerarquía simplificada de tres o cuatro clases con unos pocos métodos y sentencias esenciales, sería estupendo.