internal void FireOnPositionsOnlyChanged() {
if (_ownerThread != Thread.CurrentThread.ManagedThreadId) {
Debug.Fail(_threadContextInvalidMessage);
return;
}
try {
PositionsOnlyChanged?.Invoke(this, new TreePositionsOnlyChangedEventArgs());
} catch (Exception ex) {
Debug.Assert(false, Invariant($"Exception thrown in a tree.PositionsOnlyChanged event handler: {ex.Message}"));
}
}