internal static UserStateChangedEvent FromNative(
     CDOUserStateChangedEvent userStateChangedEvnt)
 {
     UserStateChangedEvent result = new UserStateChangedEvent();
     result._scopeId = userStateChangedEvnt.scopeId.body;
     result._mediaType =
         MediaType.FromString(userStateChangedEvnt.mediaType.body);
     result._isConnected = userStateChangedEvnt.isConnected;
     result._userId = userStateChangedEvnt.userId;
     result._audioPublished = userStateChangedEvnt.audioPublished;
     result._screenPublished = userStateChangedEvnt.screenPublished;
     result._screenSinkId = userStateChangedEvnt.screenSinkId.body;
     result._videoPublished = userStateChangedEvnt.videoPublished;
     result._videoSinkId = userStateChangedEvnt.videoSinkId.body;
     return result;
 }
 public virtual void onUserEvent(UserStateChangedEvent e)
 {
 }
 public virtual void onUserEvent(UserStateChangedEvent e)
 {
     if (UserEvent != null)
         UserEvent(this, e);
 }
 public virtual void onMediaStreamEvent(UserStateChangedEvent e)
 {
 }
 public virtual void onMediaStreamEvent(UserStateChangedEvent e)
 {
     if (MediaStream != null)
         MediaStream(this, e);
 }