PersistentDataObject class is a hash object or a POCO object that you can serialize to a file or else deserialize from a file.
An important interest of this class is that you can manage upgrade versions of the POCO object, but the loading of old files will not fail.
To do so, this class declares a dictionary of string keys and a dynamic value. Then, this class implements a function get("name", initialValue) that always gets a value and if the value is not exist, the value is created and returned with its initial value. The data type of a value is dynamic.
Similarly, a function set("name", value) creates or modifies the value.
All new classes in this project are a subclass of PersistentDataObject. For a C# property, its implementation can be
int PropertyName {
get { return get("myPropertyName", 0); }
set { set("myPropertyName", value); }
}