* Cherrypick non-comparability related changes from prolific literals PR
* Renames and other style changes
* Accept changes to new tests
* Exclude the domain root from contextual typing literals except for type variables
* Readd simple preservation fix
* Add huge map test
* Revert changes to widening on destructuring initalizers
* Use tristate for subtype-reduction type
* Rename type and argument
* Move longer-running test to user suite
* Lazily compute signature type predicates
* Use an instance of IdentifierTypePredicate to represent an unresolved type predicate
* Simplify `getMaybeTypePredicate`
* Invert representation of `resolvedTypePredicate`
* Remove `__unresolvedTypePredicate` type and remember to use `noTypePredicate` instead of `undefined` when in all `createSignature` calls
* Fix style of getTypePredicateOfSignature
* Use in createGetSymbolWalker
* Fix bugs for unions of type predicates
* Code review
* Make noTypePredicate purely an implementation detail of getTypePredictateOfSignature
* Add test
* Add test for #19642
* Add test with reversed order
* Still instantiate the extends clause even when theres a noimplicitany error in js
* Only be permissive for JS
* In JS, instantiate classes even when they have too many type arguments, instead of returning unknownType
* Error when LHS of instanceof is Union of Primitives #18519
* Refactor to allTypesAssignableToKind method and update test
* Use ternary expression instead of if / else blocks
* Do visibility painting from collectLinkedAliases in checker to remove statefullness in declaration emit
* Fix#17085
* Add deeply destructured array to test
* Add test case for #18634
* Add PR feedback
* Treat `...` in jsdoc type as creating a synthetic rest parameter -- not as an array type
* Change type parsing so `...T[]` parses as `...(T[])` and not `(...T)[]`
* Replace the last parameter with ...args, and make access to it potentially undefined
* Code review
* Update JSX intrinsic element test to match babel’s
* Update baseline
* Move regex out of isIntrinsicJsxName
* Switch to non-regex intrinsic name test
* Consider the commonjs module indicator as an indicator that something is effectively an external module
* Only use commonjs module indicator when targeting commonjs
so that error message refers to prop name instead of param name.
Changed getter errors for similar case so they also refer to prop name.
Fixed bug where static getters wouldn't output their specific error.
Fixes#1976