It may be a weird interface, but `symlink.exist?` does correctly check for bad symlinks.

`symlink.realpath` raises an exception, because the real path isn't there.

`symlink.readlink.exist?` is even worse, as I learned in #2670, because if you don't wrap that in a `Dir.chdir(symlink.dirname) do ... end`, relative symlinks won't raise an exception, but will give the wrong answer.

There might be yet another method that works there if you want greater code clarity, but I don't know what it is.