internal Translation(
     CaptureJson capture,
     Option <Guid> guid = default)
 {
     Guid         = guid;
     this.Capture = capture ?? throw new ArgumentNullException(nameof(capture));
 }
 internal CaptureContext(
     PageContext pageContext,
     CaptureJson json,
     Translation translation,
     CaptureId captureId)
 {
     this.pageContext = pageContext;
     this.json        = json;
     this.captureId   = captureId;
     this.Translation = translation;
 }
        internal Translation With(
            CaptureJson json,
            string originalText                = null,
            string translatedText              = null,
            IEnumerable <GlossNote> glosses    = null,
            IEnumerable <TranslatorNote> notes = null,
            IEnumerable <TranslatedText> alternativeTranslations = null)
        {
            var other = new Translation(json, this.Guid);

            other.Capture.Text        = originalText ?? this.OriginalText;
            other.Capture.Translation = translatedText ?? this.TranslatedText;
            other.Capture.GlossNotes  = (glosses ?? this.Glosses)?.Select(g => new NoteJson(g.Foreign, g.Text)).ToList() ?? new List <NoteJson>();
            other.Capture.Notes       = (notes ?? this.Notes).Select(g => new NoteJson(g.SideText, g.Text)).ToList();
            return(other);
        }