/// <inheritdoc />
        public void AddFailure(DicomDataset dicomDataset, ushort failureReasonCode)
        {
            CreateDatasetIfNeeded();

            if (!_dataset.TryGetSequence(DicomTag.FailedSOPSequence, out DicomSequence failedSopSequence))
            {
                failedSopSequence = new DicomSequence(DicomTag.FailedSOPSequence);

                _dataset.Add(failedSopSequence);
            }

            var failedSop = new DicomDataset()
            {
                { DicomTag.FailureReason, failureReasonCode },
            };

            // We want to turn off auto validation for FailedSOPSequence item
            // because the failure might be caused by invalid UID value.
#pragma warning disable CS0618 // Type or member is obsolete
            failedSop.AutoValidate = false;
#pragma warning restore CS0618 // Type or member is obsolete

            failedSop.AddValueIfNotNull(
                DicomTag.ReferencedSOPClassUID,
                dicomDataset?.GetSingleValueOrDefault <string>(DicomTag.SOPClassUID));

            failedSop.AddValueIfNotNull(
                DicomTag.ReferencedSOPInstanceUID,
                dicomDataset?.GetSingleValueOrDefault <string>(DicomTag.SOPInstanceUID));

            failedSopSequence.Items.Add(failedSop);
        }