Some quick ideas:
XData: Have the area object refer to a text object by handle (a 1005 group).
Dictionary: Maintain arrays of referencing objects as XRecords (just like groups do it).
The object reactor itself: Use the data field of the reactor to refer to a text object.
Groups: Self-explanatory.
In any case, make sure that you verify the referenced objects before using them. You don't want an error due to handling non-existing objects during a reactor callback. Also, AUDIT has a problem with handles in 1005 groups if they are lost.