function Event() {
  this._listeners = [];
  this._scopes = [];
  this._toRemove = [];
  this._insideRaiseEvent = false;
}
A generic utility class for managing subscribers for a particular event.
This class is usually instantiated inside of a container class and
exposed as a property for others to subscribe to.

@alias Event
@template Listener extends (...args: any[]) => void = (...args: any[]) => void
@constructor
@example
MyObject.prototype.myListener = function(arg1, arg2) {
    this.myArg1Copy = arg1;
    this.myArg2Copy = arg2;
}

const myObjectInstance = new MyObject();
const evt = new Cesium.Event();
evt.addEventListener(MyObject.prototype.myListener, myObjectInstance);
evt.raiseEvent('1', '2');
evt.removeEventListener(MyObject.prototype.myListener);