1. A method for deserializing a program object comprised of one or more data members, the method comprising: receiving serialized data conveying a representation of the program object, the serialized data including data identifying a class of the program object a data type and at least one data value for each data member comprising the program object retrieving a class definition for the identified class, the class definition including an expected data type for each data member reconstructing the program object according to the class definition, wherein reconstructing the program object comprises, for each data member reconstructing the data member if the received data type is an expected data type according to the class definition ignoring the data member if the expected data type according to the class definition is a null data type substituting one or more default data values if the received data type is the null data type and the expected data type according to the class definition is not a null data type converting the received data type to the expected data type according to the class definition if the received data type is not the expected data type and neither the received data type or the expected data type is the null data type.