I tried to use my ChronosManager object with it and STON does not seem to like this
m := ChronosManager new. s:= STON toString: m s inspect. STONWriter>>error: BlockClosure(Object)>>stonOn: STONWriter>>nextPut: STONWriter>>encodeKey:value: STONMapWriter>>at:put: [ :each | (anObject instVarNamed: each) ifNotNil: [ :value | dictionary at: each asSymbol put: value ] ifNil: [ anObject stonShouldWriteNilInstVars ifTrue: [ dictionary at: each asSymbol put: nil ] ] ] in [ :dictionary | instanceVariableNames do: [ :each | (anObject instVarNamed: each) ifNotNil: [ :value | dictionary at: each asSymbol put: value ] ifNil: [ anObject stonShouldWriteNilInstVars ifTrue: [ dictionary at: each asSymbol put: nil ] ] ] ] in STONWriter>>writeObject: in Block: [ :each | ... Array(SequenceableCollection)>>do: [ :dictionary | instanceVariableNames do: [ :each | (anObject instVarNamed: each) ifNotNil: [ :value | dictionary at: each asSymbol put: value ] ifNil: [ anObject stonShouldWriteNilInstVars ifTrue: [ dictionary at: each asSymbol put: nil ] ] ] ] in STONWriter>>writeObject: in Block: [ :dictionary | ... [ self newlineIndent. block value: mapWriter ] in [ | mapWriter | mapWriter := STONMapWriter on: self. writeStream nextPut: ${. self indentedDo: [ self newlineIndent. block value: mapWriter ]. self newlineIndent. writeStream nextPut: $} ] in STONWriter>>writeObject:streamMap: in Block: [ self newlineIndent.... STONWriter>>indentedDo: [ | mapWriter | mapWriter := STONMapWriter on: self. writeStream nextPut: ${. self indentedDo: [ self newlineIndent. block value: mapWriter ]. self newlineIndent. writeStream nextPut: $} ] in STONWriter>>writeObject:streamMap: in Block: [ | mapWriter |... [ writeStream nextPutAll: anObject class stonName. self prettyPrintSpace. block value ] in STONWriter>>writeObject:do: in Block: [ writeStream nextPutAll: anObject class stonName....etc... STONWriter>>with:do: STONWriter>>writeObject:do: STONWriter>>writeObject:streamMap: STONWriter>>writeObject: KMKeymap(Object)>>stonOn: STONWriter>>nextPut: STONWriter>>encodeKey:value: [ :key :value | first ifTrue: [ first := false ] ifFalse: [ self mapElementSeparator ]. self encodeKey: key value: value ] in [ self newlineIndent. pairs keysAndValuesDo: [ :key :value | first ifTrue: [ first := false ] ifFalse: [ self mapElementSeparator ]. self encodeKey: key value: value ] ] in STONWriter>>encodeMap: in Block: [ :key :value | ... [ :assoc | aBlock value: assoc key value: assoc value ] in Dictionary>>keysAndValuesDo: in Block: [ :assoc | aBlock value: assoc key value: assoc va...etc... [ :each | each ifNotNil: [ aBlock value: each ] ] in Dictionary>>associationsDo: in Block: [ :each | each ifNotNil: [ aBlock value: each ] ] Array(SequenceableCollection)>>do: Dictionary>>associationsDo: Dictionary>>keysAndValuesDo: [ self newlineIndent. pairs keysAndValuesDo: [ :key :value | first ifTrue: [ first := false ] ifFalse: [ self mapElementSeparator ]. self encodeKey: key value: value ] ] in STONWriter>>encodeMap: in Block: [ self newlineIndent.... STONWriter>>indentedDo: STONWriter>>encodeMap: [ self encodeMap: hashedCollection ] in STONWriter>>writeMap: in Block: [ self encodeMap: hashedCollection ] STONWriter>>with:do: