It seems like `source` can be either a filename or the whole body as a String, and then you have to pass along that `binary` flag. What if instead, you passed either a `String` or a `File` object, and switch on that? Or even a `String` vs a `Pathname`.