Cached types which implement the Sirenix.Serialization.Utilities.ICacheNotificationReceiver interface will receive notifications when they are claimed and freed.
Only one thread should be holding a given cache instance at a time if Sirenix.Serialization.Utilities.ICacheNotificationReceiver is implemented, since the invocation of Sirenix.Serialization.Utilities.ICacheNotificationReceiver.OnFreed is not thread safe, IE, weird stuff might happen if multiple different threads are trying to free the same cache instance at the same time. This will practically never happen unless you're doing really strange stuff, but the case is documented here.