TValueWatcheris used to implement a common Tool pattern where it is necessary to essentially poll a value to see if it has changed, and if it has, call a function. For exampleUObjectUProperties are frequently directly modified by (eg) DetailsView/etc, this results in PropertyChange events that can be used in the editor to respond to changes. However at Runtime no such events are generated and so the Tool has no way of knowing when UProperties change except by polling and comparing with a cached value. The purpose of this class is simply to encapsulate this common pattern/logic.