a) on unix, FileExistsUTF8 calls sysutils.FileExists(UTF8ToSys()).
here it can be simpler, by deleting UTF8ToSys().
b) on win32, FileExistsUTF8 calls sysutils.FileExists(UTF8ToSys()).
then code calls UnicodeString variant of sysutils.FileExists.
so we do
utf8 -> sys_cp -> UnicodeString
which can be replaced with 1 call UTF8Decode.
a) is micro optimization.
b) is bigger one.