constructor(initializer, deinitializer) {
        /**
         * @type {!(function(): T)}
         * @template T
         */
        this.initializer = initializer;
        /**
         * @type {!(function(T): void)}
         * @template T
         */
        this.deinitializer = deinitializer;
        /**
         * @type {undefined|!int}
         * @private
         */
        this.lifetimeId = undefined;
        /**
         * @type {undefined|T}
         * @template T
         * @private
         */
        this.mortalValue = undefined;
    }
@param {!function() : T} initializer
@param {!function(T) : void} deinitializer
@template T