Saving whole script objects in user defaults

I am trying to save whole script objects in user defaults and it’s registering zero count …

property gRecentFiles : {}

on MakeNewFile(itsName)
		property theName : itsName
		property otherParms : true or false
		on func1(value)
			set otherParms to value
		end func1
		on func2()
			return otherParms
		end getStopped
	end script
end MakeNewFile

on will finish launching theObject
	tell user defaults
		make new default entry at end of default entries with properties {name:"recentFiles", contents:gRecentFiles}
	end tell

	tell user defaults to set gRecentFiles to contents of default entry "recentFiles" as list
end will finish launching

on will quit theObject
	tell user defaults to set contents of default entry "recentFiles" to gRecentFiles
end will quit

-- elsewhere ..

set theFile to MakeNewFile(theNewName)
copy theFile to the beginning of gRecentFiles

If I do not place a list of script objects in the list gRecentFiles, for example, strings or booleans, everything works completely; however, if each list item is a script object, with quitting the count of gRecentFiles is 2 (as it should be, for example) … and then upon a fresh launch, the count of gRecentFiles is always zero.

Am I allowed to place script objects in user defaults, or am I limited to simple parameters, such as a string or a boolean?

This is really a bummer because I just discovered that user defaults must only contain Unicode text … so how do I store whole script objects that contain both properties and handlers? The properties are easy to deal with (I could use different user defaults for these, but the handlers that “handle” these properties?