For each class we need an abstract class that allows for a client application to interact with the abstract class rather than the 1.3.1.1 implementation or the 1.4.1.1 implementation. i.e. I want to interact with a WELL not a 1.3.1.1 well or a 1.4.1.1 well.
The version will be set as a property of the abstract class and that will be the property that will be used to determine how to serialize the data correctly.
This should be supported for the following objects:
Well
Wellbore
Log
Trajectory
MudLog
Message