> Does anyone have any thoughts?

i have too many for my own good :-)

i have a little experience tracking object states: i wrote some code to do 
this for GUtopIa. your difficulty is the BEFORE modification. what i did when 
tracking object state was powerful but far from elegant: i simply ran through 
every method of an object and aliased it such that a hook/trap method was 
called along with the original method. in my case i beleive i inserted the 
call after the fact to see if anything changed. in your case you will want to 
do it before the fact to "lock" the object (btw, how do you do that?)

hope that helps. if you'd like a copy of the code, to see what i did, let me 
know. (note, Rich Kilmer deserves much thanks in helping me figure out how to 
do this.)

-- 
tom sawyer, aka transami
transami / transami.net