DefaultSerializer will automatically deserialize to an instance of the field's type if the field's type is final.
Added some todo comments.
Deal with VirtualProperty correctly.
Added a protected no-arg constructor for PropertiesWrapper so you it can be extended if desired.
Put validator to use.
Some cleanup.