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

            result.AddRange(base.Validate());

            if (Identifier != null)
            {
                result.AddRange(Identifier.Validate());
            }
            if (Type != null)
            {
                result.AddRange(Type.Validate());
            }
            if (Source != null)
            {
                Source.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (Subject != null)
            {
                result.AddRange(Subject.Validate());
            }
            if (AccessionIdentifier != null)
            {
                AccessionIdentifier.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (ReceivedTimeElement != null)
            {
                result.AddRange(ReceivedTimeElement.Validate());
            }
            if (Collection != null)
            {
                result.AddRange(Collection.Validate());
            }
            if (Treatment != null)
            {
                Treatment.ForEach(elem => result.AddRange(elem.Validate()));
            }
            if (Container != null)
            {
                Container.ForEach(elem => result.AddRange(elem.Validate()));
            }

            return(result);
        }