public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
        {
            PropertyDescriptorCollection pds = new PropertyDescriptorCollection(null);
            IList <T> list = (IList <T>)value;

            foreach (T element in list)
            {
                ListDescriptor <T> desc = new ListDescriptor <T>(list.IndexOf(element), list);
                pds.Add(desc);
            }
            return(pds);
        }
        public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
        {
            PropertyDescriptorCollection pds = new PropertyDescriptorCollection(null);

            List <Joint> jointList = new List <Joint>();
            JointEdge    iterator  = (JointEdge)value;

            while (iterator != null)
            {
                jointList.Add(iterator.Joint);
                iterator = iterator.Next;
            }

            foreach (Joint element in jointList)
            {
                ListDescriptor <Joint> desc = new ListDescriptor <Joint>(jointList.IndexOf(element), jointList);
                pds.Add(desc);
            }
            return(pds);
        }