/// <summary>
        /// Within this super-ordinate list of (different) instances, identifiy the instances matching
        /// <c>idShortHead</c> and trigger the instance with infex <c>index</c> on its MasterEvent method
        /// </summary>
        public void TriggerSlaveEvents(FormInstanceSubmodelElement masterInst, int masterIndex)
        {
            // access
            var masterDesc    = masterInst?.desc as FormDescSubmodelElement;
            var masterIdShort = masterDesc?.PresetIdShort;

            if (masterInst == null || masterDesc == null || masterIndex < 0 || masterIdShort == null)
            {
                return;
            }
            // go up to list of different
            var pf = this.parentForm;

            if (pf == null || !(pf is IFormListOfDifferent))
            {
                return;
            }
            var lod = (pf as IFormListOfDifferent).GetListOfDifferent();

            if (lod == null)
            {
                return;
            }
            // iterate over this list
            foreach (var li in lod)
            {
                var lisme = li.desc as FormDescSubmodelElement;
                if (lisme == null || lisme.PresetIdShort == null)
                {
                    continue;
                }
                if (lisme.SlaveOfIdShort == null)
                {
                    continue;
                }
                if (!masterIdShort.StartsWith(lisme.SlaveOfIdShort))
                {
                    continue;
                }
                if (li.instances == null || li.instances.SubInstances == null ||
                    li.instances.SubInstances.Count <= masterIndex)
                {
                    break;
                }
                var slaveSme = li.instances.SubInstances[masterIndex] as FormInstanceSubmodelElement;
                if (slaveSme != null)
                {
                    slaveSme.OnSlaveEvent(masterInst.desc as FormDescSubmodelElement, masterInst, masterIndex);
                }
            }
        }
        /// <summary>
        /// Event was raised from master because matching slave.
        /// </summary>
        public override void OnSlaveEvent(
            FormDescSubmodelElement masterDesc, FormInstanceSubmodelElement masterInst, int index)
        {
            // access to master
            var pMasterInst = masterInst as FormInstanceProperty;
            var pMaster     = pMasterInst?.sme as AdminShell.Property;

            if (pMaster?.value == null)
            {
                return;
            }

            // accues to this
            var pThis = this.sme as AdminShell.Property;

            if (pThis == null)
            {
                return;
            }

            // desc of this
            var pDesc = this.desc as FormDescProperty;

            if (pDesc == null || pDesc.valueFromMasterValue == null ||
                !pDesc.valueFromMasterValue.ContainsKey(pMaster.value.Trim()))
            {
                return;
            }

            // simply take value
            pThis.value = pDesc.valueFromMasterValue[pMaster.value.Trim()];
            this.Touch();

            // refresh
            if (this.subControl != null && this.subControl is FormSubControlProperty scp)
            {
                scp.UpdateDisplay();
            }
        }
 /// <summary>
 /// Event was raised from master because matching slave.
 /// </summary>
 public virtual void OnSlaveEvent(
     FormDescSubmodelElement masterDesc, FormInstanceSubmodelElement masterInst, int index)
 {
 }