But if PCDContainer doesn't have a flag denoting the format, it doesn't make much sense to have such a flag in PCDManager either?

I'd say don't worry about changes to the public API - this code, after all, is not like java.* package. We need to do what makes most sense. And clearly having a method that can only be called immediately after an object is constructed, doesn't seem like a good design. Maybe the best thing is not to save the PDB in PCDManager.run() in the first place (i.e. create a separate method for it, which may take a different file name/format) unless there is some really good reason to keep the current model.