I really wonder if we shouldn't just throw here. I've seen a number of bugs in which callers try to call `getFileForPath` with an empty string. In that case the assert fails, but we still hand out fairly broken `File` object. It might be better to fail fast.