`FileUtils.touch` is rather complex and powerful, rather more than the equivalent Unix command which can't even create directories, and more so than people will typically want; I didn't want to pollute the `CheckedPath` API with it when the other operations there are more simple, common things. To avoid introducing bugs, not being sure of how much of the functionality was needed, I figured that it was safest to simply reproduce all of it; it also then accidentally doubles as a test of the `CheckedPath` API in use.

It's possible that `FileUtils.touch` was overkill for what was needed and that, in this case, the logic could be simplified; I'm honestly not sure.