/// <summary>
        /// indexer to get a Frame or to set a Frame
        /// </summary>
        public TextureFrame this[int index]
        {
            get
            {
                if (index < 0 || index >= _frames.Count)
                {
                    return(null);
                }
                return(_frames[index]);
            }
            set
            {
                if (index < 0)
                {
                    return;
                }

                if (_frames.Count <= index)
                {
                    value.Disposed += new EventHandler(TextureFrame_Disposed);
                    _frames.Add(value);
                }
                else
                {
                    TextureFrame frame = _frames[index];
                    if (frame != value)
                    {
                        frame.Disposed -= new EventHandler(TextureFrame_Disposed);
                        frame.SafeDispose();
                        value.Disposed += new EventHandler(TextureFrame_Disposed);
                        _frames[index]  = value;
                    }
                }
            }
        }