function ResizeObserverSPI(callback, controller, callbackCtx) {
            /**
             * Collection of resize observations that have detected changes in dimensions
             * of elements.
             *
             * @private {Array<ResizeObservation>}
             */
            this.activeObservations_ = [];
            /**
             * Registry of the ResizeObservation instances.
             *
             * @private {Map<Element, ResizeObservation>}
             */
            this.observations_ = new MapShim();
            if (typeof callback !== 'function') {
                throw new TypeError('The callback provided as parameter 1 is not a function.');
            }
            this.callback_ = callback;
            this.controller_ = controller;
            this.callbackCtx_ = callbackCtx;
        }
Creates a new instance of ResizeObserver.

@param {ResizeObserverCallback} callback - Callback function that is invoked
     when one of the observed elements changes it's content dimensions.
@param {ResizeObserverController} controller - Controller instance which
     is responsible for the updates of observer.
@param {ResizeObserver} callbackCtx - Reference to the public
     ResizeObserver instance which will be passed to callback function.