I'm not completely happy with this. My main problem is that I'm not sure how are the `Metadata` instances passed around, if nothing ever replaces this or if it doesn't get copied somewhere else.

At the moment I'm thinking that adding a method that would create format-specific instances and call that everywhere in the `File` class would help, but I'm not completely sure.