Just wanted to report a simple issue that may have already been fixed. (Have not updated in a while)
I was having problems after deploying a new update to a clients system. In a nutshell, I was able to trace it to the deserialize routine being dependent on the environment to function correctly. (I.E. "exact" being set to "off")
I made it work by saving/restoring "exact", but real fix should be in deserialize itself. (My opinion)
Instead of using "=" (with entire param string) and relying on "exact off"...
FUNCTION Deserialize(lcValue) IF lcValue = [{] RETURN this.ParseObject(lcvalue) ENDIF . . .
Strip first char and check it...
FUNCTION Deserialize(lcValue) local cChr cChr = left( lcValue, 1 ) IF cChr = [{] RETURN this.ParseObject(lcvalue) ENDIF . . .
Anyway, I'm a great fan and don't know how you do it. (I still think you have discovered a way to clone yourself!) I will enter a "Success Story" post about how I have used your code.