The TS compiler is likely to test paths with extensions and try to load them as files. Therefore `fileExists()` and methods that rely on it need to be able to distinguish between real files and directories that have paths that look like files. This came up as a bug in ngcc when trying to process `ngx-virtual-scroller`, which relies upon a library called `@tweenjs/tween.js`. PR Close #31289