Structures For Tracking Global Options
Immplemented as S4 classes just so we can ensure everything is guaranteed to have the right slots. This is done by defining a virtual class that has a validity function that checks the required slots exist.
Not we don't use "ANY" slots here because that would allow partially specified sub classes (i.e. classes with slots that are "ANY"), which we do not want to allow.
unitizerGlobalTrackingStore is used to keep "compressed" versions of
unitizerGlobal$tracking. The compressed versions obviously lose some
information. In particular, environments or things that have environments
as parents, or large objects, are not stored and instead a reference to
unitizerDummy object is stored. This object unambiguously
identifies a non-stored object since no user or system code should
normally creating a
unitizerGlobalState tracks a single state which is just one value from
each of the slots of
When comparing state between new and reference tests, only explicitly stored items are compared (though any extra or missing items may be brought up as possible mismatches).