This allows FS subclasses to provide more efficient implementations, and have them transparently used through various wrapper classes.