Shouldn't `FileSystem` extend `Self[FileSystem]` and provide `override protected[this] def self: FileSystem = this` instead of adding this new `wrap` method?