protected virtual void OnStateChanged(StateChangedEventArgs eventArgs)
 {
 }
 private void OnStateChanged(object sender, StateChangedEventArgs eventArgs)
 {
     StateChanged?.Invoke(this, eventArgs);
     OnStateChanged(eventArgs);
 }