/// <summary cref="NodeSource.Clone(NodeSource)" />
 public override NodeSource Clone(NodeSource parent)
 {
     lock (DataLock)
     {
         VariableTypeSource <T> clone = new VariableTypeSource <T>(Server);
         clone.Initialize(this);
         return(clone);
     }
 }
        /// <summary cref="NodeSource.Initialize(NodeSource)" />
        public override void Initialize(NodeSource source)
        {
            lock (DataLock)
            {
                base.Initialize(source);

                VariableTypeSource <T> type = (VariableTypeSource <T>)source;

                m_value           = (T)Utils.Clone(type.m_value);
                m_datatype        = type.m_datatype;
                m_valueRank       = type.m_valueRank;
                m_arrayDimensions = (IList <uint>)Utils.Clone(type.m_arrayDimensions);
                m_isAbstract      = type.m_isAbstract;
            }
        }