/// <summary>
        /// Sets the opc value.
        /// </summary>
        /// <param name="reference">The monitored item reference.</param>
        /// <param name="opcValue">The OPC value structure.</param>
        private void SetOpcValue(MonitoredItemReference reference, DAVtq opcValue)
        {
            switch (reference.FieldType)
            {
            case FieldTypes.Quality:
                this.RuntimeMeasurements[reference.Index].Quality = this.FormatOpcVtq(reference.MappingType, opcValue);
                break;

            case FieldTypes.Timestamp:
                this.RuntimeMeasurements[reference.Index].Timestamp = this.FormatOpcVtq(reference.MappingType, opcValue);
                break;

            case FieldTypes.Unit:
                this.RuntimeMeasurements[reference.Index].Unit = this.FormatOpcVtq(reference.MappingType, opcValue);
                break;

            case FieldTypes.Value:
                this.RuntimeMeasurements[reference.Index].Value = this.FormatOpcVtq(reference.MappingType, opcValue);
                break;
            }
        }
        /// <summary>
        /// Adds a new item to the collection.
        /// </summary>
        /// <param name="reference">The reference to the corresponding monitored item from the calling client.</param>
        /// <param name="serverClass">The server class.</param>
        /// <param name="itemId">The OPC item id.</param>
        /// <remarks>
        /// This method adds a new item or only the reference when the item exists already.
        /// </remarks>
        public void Add(MonitoredItemReference reference, string serverClass, string itemId)
        {
            var        descriptor = new Descriptor(serverClass, itemId);
            References references;

            if (!this.ItemDescriptors.TryGetValue(descriptor, out references))
            {
                references = new References()
                {
                    reference
                };
                this.ItemDescriptors.Add(descriptor, references);
                this.ItemGroupArgumentList.Add(
                    new DAItemGroupArguments(
                        new ServerDescriptor(serverClass),
                        new DAItemDescriptor(itemId),
                        new DAGroupParameters(this.OpcRefreshRate),
                        references));
            }
            else
            {
                references.Add(reference);
            }
        }