/// <summary>
        /// Add an extension to List
        /// </summary>
        /// <param name="path">The extension,
        /// such as ex: ".mp3" or full path "C:\\mymusic.mp3".</param>
        /// <param name="iconSize">The icon size, support multi size flags</param>
        /// <returns>Returns Icon and thier information.</returns>
        public IconProperties AddEx(string path, IconReader.IconSize iconSize)
        {
            IconProperties iconProp = IsValidEx(path);

            if ((iconSize & IconReader.IconSize.Small) == IconReader.IconSize.Small)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Small))
                {
                    Add(path, IconReader.IconSize.Small, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.Large) == IconReader.IconSize.Large)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Large))
                {
                    Add(path, IconReader.IconSize.Large, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.ExtraLarge) == IconReader.IconSize.ExtraLarge)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.ExtraLarge))
                {
                    Add(path, IconReader.IconSize.ExtraLarge, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.Jumbo) == IconReader.IconSize.Jumbo)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Jumbo))
                {
                    Add(path, IconReader.IconSize.Jumbo, iconProp);
                }
            }
            if (!IsValid(path))
            {
                IconList.Add(path, iconProp);
            }
            return(iconProp);
        }