public override bool Equals(object obj)
        {
            if (obj is feature)
            {
                feature sobj = obj as feature;
                if (sobj.Var == this.Var)
                {
                    return(true);
                }
            }

            return(false);
        }
        public void AddFeature(feature feature)
        {
            /// Make sure this feature doesn't exists
            ///
            lock (m_LockFeatures)
            {
                foreach (feature fea in Features)
                {
                    if (fea.Equals(feature) == true)
                    {
                        return;
                    }
                }

                Features.Add(feature);
            }
        }
        public void RemoveFeature(feature feature)
        {
            /// Make sure this feature doesn't exists
            ///
            lock (m_LockFeatures)
            {
                feature foundfeature = null;
                foreach (feature fea in Features)
                {
                    if (fea.Equals(feature) == true)
                    {
                        foundfeature = fea;
                        break;
                    }
                }

                if (foundfeature != null)
                {
                    Features.Remove(foundfeature);
                }
            }
        }