Sheridan wrote:
>Do operations involving FileStream as input always return a 
>MultiByteFileStream? 

That is a well-known pattern, class cluster. A base class defining an interface and acting as
a factory hiding the specific class returned. Cocoa uses that a lot, it results in a much
cleaner architecture than that of .net and java.
https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/ClassClusters/ClassClusters.html 

Stephan