It's too bad there's no way to just pass `keepChangesTime` down to the impl layer instead of doing this extra stat code here.  I guess this isn't so bad since the stat() call here is virtually free due to caching.  It doesn't create any race conditions that weren't already present with AppshellFileSystem impl (since it does the overwrite checking using its own stat())... although in an impl with a more atomic "write-if-unchanged" operation this _would_ add a tiny race condition.