/// <nodoc />
        public bool TryAddIpc(
            IpcClientInfo ipcClientInfo,
            PipData arguments,
            FileArtifact outputFile,
            ReadOnlyArray <PipId> servicePipDependencies,
            ReadOnlyArray <FileArtifact> fileDependencies,
            ReadOnlyArray <DirectoryArtifact> directoryDependencies,
            ReadOnlyArray <FileOrDirectoryArtifact> skipMaterializationFor,
            bool isServiceFinalization,
            bool mustRunOnMaster,
            string[] tags,
            out IpcPip ipcPip)
        {
            ipcPip = new IpcPip(
                ipcClientInfo,
                arguments,
                outputFile: outputFile,
                servicePipDependencies: servicePipDependencies,
                fileDependencies: fileDependencies,
                directoryDependencies: directoryDependencies,
                skipMaterializationFor: skipMaterializationFor,
                isServiceFinalization: isServiceFinalization,
                mustRunOnMaster: mustRunOnMaster,
                tags: ToStringIds(tags),
                provenance: CreatePipProvenance(string.Empty)
                );

            if (PipGraph != null)
            {
                var success = PipGraph.AddIpcPip(ipcPip, GetValuePipId());
                return(success);
            }

            return(true);
        }