private static void RegisterProperty(PropertyInfoEx propEx, PropertiesExDictionary properties, bool hasIndexParameters)
        {
            var prop = propEx.prop;

            if (!hasIndexParameters)
            {
                var propName = prop.Name;
                //A property might be overriden by a descendant class
                int existingPos = -1;
                //If we have already registered then we check
                //Descendant property will always win
                if (!properties.TryGetValue(propName, out existingPos))
                {
                    properties.AddProperty(propName, propEx);
                }
                else
                {
                    propEx.propertyPositionIndex           = (short)existingPos;
                    properties.PropertiesList[existingPos] = propEx;
                }
            }
        }