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

            result.AddRange(base.Validate());

            if (Request != null)
            {
                result.AddRange(Request.Validate());
            }
            if (DateElement != null)
            {
                result.AddRange(DateElement.Validate());
            }
            if (Who != null)
            {
                result.AddRange(Who.Validate());
            }
            if (Authority != null)
            {
                result.AddRange(Authority.Validate());
            }
            if (Cost != null)
            {
                result.AddRange(Cost.Validate());
            }
            if (CodeElement != null)
            {
                result.AddRange(CodeElement.Validate());
            }
            if (DescriptionElement != null)
            {
                result.AddRange(DescriptionElement.Validate());
            }
            if (Fulfillment != null)
            {
                Fulfillment.ForEach(elem => result.AddRange(elem.Validate()));
            }

            return(result);
        }