I think we want to turn file into a path_string here.  The replace_file method will call to_s on this and it will work, but if the intention is that these handles should not themselves expect to receive any calls outside of manipulation within the FileSystem, then we probably shouldn't pass a handle into a method that doesn't know it's working with an opaque file object?