* 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