public override ErrorList Validate()
        {
            var result = new ErrorList();

            result.AddRange(base.Validate());

            if (Subject != null)
            {
                result.AddRange(Subject.Validate());
            }
            if (Encounter != null)
            {
                result.AddRange(Encounter.Validate());
            }
            if (Asserter != null)
            {
                result.AddRange(Asserter.Validate());
            }
            if (DateAssertedElement != null)
            {
                result.AddRange(DateAssertedElement.Validate());
            }
            if (Code != null)
            {
                result.AddRange(Code.Validate());
            }
            if (Category != null)
            {
                result.AddRange(Category.Validate());
            }
            if (StatusElement != null)
            {
                result.AddRange(StatusElement.Validate());
            }
            if (Certainty != null)
            {
                result.AddRange(Certainty.Validate());
            }
            if (Severity != null)
            {
                result.AddRange(Severity.Validate());
            }
            if (Onset != null)
            {
                result.AddRange(Onset.Validate());
            }
            if (Abatement != null)
            {
                result.AddRange(Abatement.Validate());
            }
            if (Stage != null)
            {
                result.AddRange(Stage.Validate());
            }
            if (Evidence != null)
            {
                Evidence.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (Location != null)
            {
                Location.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (RelatedItem != null)
            {
                RelatedItem.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (NotesElement != null)
            {
                result.AddRange(NotesElement.Validate());
            }

            return(result);
        }