-1110,1267d1109
+1127,1284d1126
 < 
 < /**
 <  * This is not an official DOM interface. It is used to add generic typing

>  * @param {!function(T, number, !Array<T>): boolean} predicateFn
>  * @param {*=} opt_this
>  * @return {T}
1318,1319c1158,1159
<  * @param {!function(this:S, T, number, !Array<T>): boolean} predicateFn
<  * @param {S=} opt_this
---
>  * @param {!function(T, number, !Array<T>): boolean} predicateFn
>  * @param {*=} opt_this
1321,1322d1160
<  * @this {IArrayLike<T>|string}
<  * @template T,S
1333,1334d1170
<  * @this {!IArrayLike<T>|string}
<  * @template T
1345d1180
<  * @template T
1356,1357d1190
<  * @this {!IArrayLike<T>|string}
<  * @template T
1525,1526c1358,1359
<  * @param {function(this: THIS, ...?): RESULT} targetFn
<  * @param {THIS} thisArg
---
>  * @param {function(...?): RESULT} targetFn
>  * @param {*} thisArg
1529c1362
<  * @template THIS, RESULT
---
>  * @template RESULT

< Promise.prototype.finally = function(callback) {};
< 
< 
1297,1298c1139,1140
<  * @param {function(this:S, (string|T), number): R=} opt_mapFn
<  * @param {S=} opt_this
---
>  * @param {function((string|T), number): R=} opt_mapFn
>  * @param {*=} opt_this
1300c1142
<  * @template T,S,R
---
>  * @template T,R
1324,1328c1166,1168
<  * @param {!function(this:S, T, number, !Array<T>): boolean} predicateFn
<  * @param {S=} opt_this
<  * @return {T|undefined}
