public IUser this[int index]
        {
            get
            {
                return(InnerGet(index));
            }
            set
            {
                ExceptionHelper.FalseThrow <ArgumentNullException>(value != null, "value");

                this.RWLock.AcquireWriterLock(lockTimeout);
                try
                {
                    if (Contains(value) == false)
                    {
                        if ((value is WfOguUser) == false)
                        {
                            value = new WfOguUser((IUser)value);
                        }

                        List[index] = value;
                    }
                }
                finally
                {
                    this.RWLock.ReleaseWriterLock();
                }
            }
        }
        protected override void InnerAdd(IUser user)
        {
            this.RWLock.AcquireWriterLock(lockTimeout);
            try
            {
                if ((user is WfOguUser) == false)
                {
                    user = new WfOguUser(user);
                }

                if (Contains(user) == false)
                {
                    List.Add(user);
                }
            }
            finally
            {
                this.RWLock.ReleaseWriterLock();
            }
        }