public override object Clone()
        {
            PropertyOverride po = (PropertyOverride)base.Clone();

            po._baseClassId    = _baseClassId;
            po._baseIsAbstract = _baseIsAbstract;
            po._basePropertyId = _basePropertyId;
            return(po);
        }
        protected override void OnPropertyTypeChanged()
        {
            base.OnPropertyTypeChanged();
            DataTypePointer type = PropertyType;
            //update special values in action parameter-values
            List <PropertyValueClass>            values = new List <PropertyValueClass>();
            List <CustomPropertyOverridePointer> items  = new List <CustomPropertyOverridePointer>();

            if (Getter != null)
            {
                Getter.Parameters[0].SetDataType(type);
                if (Getter.ActionList != null)
                {
                    Dictionary <UInt32, IAction> acts = this.RootPointer.GetActions();
                    Getter.ActionList.SetActions(acts);
                    Getter.ActionList.FindItemByType <CustomPropertyOverridePointer>(items);
                }
            }
            if (Setter != null)
            {
                if (Setter.ActionList != null)
                {
                    Dictionary <UInt32, IAction> acts = this.RootPointer.GetActions();
                    Setter.ActionList.SetActions(acts);
                    Setter.ActionList.FindItemByType <CustomPropertyOverridePointer>(items);
                    Setter.ActionList.FindItemByType <PropertyValueClass>(values);
                }
            }
            foreach (CustomPropertyOverridePointer a in items)
            {
                PropertyOverride po = (PropertyOverride)(a.Property);
                if (po.BaseClassId == this.BaseClassId && po.BasePropertyId == this.BasePropertyId)
                {
                    po.SetMembers(CanRead, CanWrite, AccessControl, type);
                }
            }
            foreach (PropertyValueClass a in values)
            {
                a.SetDataType(type);
            }
        }