In working on
DM-25691 it became clear that the FileFormatter subclass is a bit inconsistent and not as useful as it should be. We also have some design issues stemming from an initial design decision that Formatter is a generic concept for gen3 that deals with read() and write() to a datastore location but is not specific for files.
At this point it seems likely that Formatter is only used for files and that we can clean up some wrinkles in the structure of the classes by making that explicit. If a new datastore comes along that needs something other than files and needs a Formatter concept then we can create a whole new unrelated class for it.