In Swift 3, what exactly is the difference in access control between
private class Foo { }
and
fileprivate class Bar { }
assuming both are top-level classes, that is, they are placed directly into a file rather than nested in some other construct?