     }
     
     /// Parses the `Publication` from the provided file and the `parsers`.
-    private func parsePublication(from file: PublicationFile, warnings: WarningLogger?) -> Deferred<Publication, Publication.OpeningError> {
+    private func parsePublication(from file: PublicationFile, warnings: WarningLogger?, onCreatePublication: Publication.Builder.Transform?) -> Deferred<Publication, Publication.OpeningError> {
         return deferred(on: .global(qos: .userInitiated)) {
             var parsers = self.parsers
             var parsedBuilder: Publication.Builder?

            }
            .flatMap { file in
                // Parses the Publication using the parsers.
                self.parsePublication(from: file, warnings: warnings)
            }
            .resolve(on: .main, completion)
    }

            
            // Transform from the Content Protection.
            builder.apply(file.onCreatePublication)
            // Transform provided by the reading app during the construction of the `Streamer`.
            builder.apply(self.onCreatePublication)
            // Transform provided by the reading app in `Streamer.open()`.
            if let onCreatePublication = onCreatePublication {
                builder.apply(onCreatePublication)
            }

            return .success(builder.build())
        }
