public override void LoadFromNode(ConfigNode node)
        {
            base.LoadFromNode(node);

            var newNode = node.GetNode(ConfigName);

            if (newNode.IsNull())
            {
                return;
            }

            var value = (IConfigNode)Value;

            CFGUtil.AssignConfigObject(this, newNode, ref value);
            Value = value;
        }
        public override void LoadFromNode(ConfigNode node)
        {
            base.LoadFromNode(node);

            var values = node.GetValues(ConfigName);

            if (values.Length == 0)
            {
                return;
            }

            CreateListIfNecessary();

            bool createNewItems = false;

            if (Count != values.Length)
            {
                ClearList();
                createNewItems = true;
            }

            for (int i = 0; i < values.Length; i++)
            {
                object obj = null;

                if (!createNewItems)
                {
                    obj = List[i];
                }

                CFGUtil.AssignConfigObject(this, values[i], ref obj);

                if (createNewItems)
                {
                    List.Add(obj);
                }
                else
                {
                    List[i] = obj; // This may be self-assignment under certain circumstances
                }
            }
        }