/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="element"></param>
 /// <param name="name"></param>
 /// <param name="type"></param>
 /// <param name="category"></param>
 /// <param name="dataTiersWherePresent"></param>
 /// <param name="available"></param>
 /// <param name="component"></param>
 /// <param name="defaultValue"></param>
 /// <param name="values"></param>
 /// <param name="description"></param>
 public FiftyOneAspectPropertyMetaDataDefault(
     IAspectEngine element,
     string name,
     Type type,
     string category,
     IList <string> dataTiersWherePresent,
     bool available,
     ComponentMetaDataDefault component,
     ValueMetaDataDefault defaultValue,
     IEnumerable <ValueMetaDataDefault> values,
     string description)
     : this(element,
            name,
            type,
            category,
            dataTiersWherePresent,
            available,
            component,
            defaultValue,
            values,
            description,
            255,
            false, false, false, true, true, string.Empty)
 {
 }
        public FiftyOneAspectPropertyMetaDataDefault(
            IAspectEngine element,
            string name,
            Type type,
            string category,
            IList <string> dataTiersWherePresent,
            bool available,
            ComponentMetaDataDefault component,
            ValueMetaDataDefault defaultValue,
            IEnumerable <ValueMetaDataDefault> values,
            string description,
            byte displayOrder,
            bool list,
            bool mandatory,
            bool obsolete,
            bool show,
            bool showValues,
            string url) : base(element, name, type, category, dataTiersWherePresent, available, description)
        {
            if (component == null)
            {
                throw new ArgumentNullException(nameof(component));
            }
            if (defaultValue == null)
            {
                throw new ArgumentNullException(nameof(defaultValue));
            }

            _component    = component;
            _defaultValue = defaultValue;
            DisplayOrder  = displayOrder;
            List          = list;
            Mandatory     = mandatory;
            Obsolete      = obsolete;
            Show          = show;
            ShowValues    = showValues;
            Url           = url;

            // Add this property to the configured component.
            _component.AddProperty(this);
            // Set the property of the default value to this.
            _defaultValue.SetProperty(this);
            _values = values.Select(v =>
            {
                v.SetProperty(this);
                return((IValueMetaData)v);
            }).ToList();
        }