         public let debugDocumentVersioning: Bool
         public init(buildableProductRunnable: BuildableProductRunnable,
                     buildConfiguration: String,
-                    shouldUseLaunchSchemeArgsEnv: Bool,
-                    savedToolIdentifier: String,
-                    useCustomWorkingDirectory: Bool,
-                    debugDocumentVersioning: Bool) {
+                    shouldUseLaunchSchemeArgsEnv: Bool = true,
+                    savedToolIdentifier: String = "",
+                    useCustomWorkingDirectory: Bool = false,
+                    debugDocumentVersioning: Bool = true) {
             self.buildableProductRunnable = buildableProductRunnable
             self.buildConfiguration = buildConfiguration
             self.shouldUseLaunchSchemeArgsEnv = shouldUseLaunchSchemeArgsEnv

    public struct BuildableProductRunnable {
        public let runnableDebuggingMode: String
        public let buildableReference: BuildableReference
        public init(runnableDebuggingMode: String,
                    buildableReference: BuildableReference) {
            self.runnableDebuggingMode = runnableDebuggingMode
            self.buildableReference = buildableReference
        }
        public init(element: AEXMLElement) throws {
            self.runnableDebuggingMode = element.attributes["runnableDebuggingMode"]!

        public let buildableName: String
        public let buildableIdentifier: String
        public let blueprintName: String

        public init(referencedContainer: String,
                    blueprintIdentifier: String,
                    buildableName: String,
                    blueprintName: String,
                    buildableIdentifier: String = "primary") {
            self.referencedContainer = referencedContainer
            self.blueprintIdentifier = blueprintIdentifier
            self.buildableName = buildableName
