Hmm. Honestly, I'm now thinking that keeping FileContent separate from File is just not working out. It doesn't have any significant advantages anymore, and it creates some really awkward code like this for dealing with both the file and its content. I'm thinking about making the FileContent implementations subclasses of File (again... sigh).