/// <summary>
        /// Saves the view state.
        /// </summary>
        /// <returns></returns>
        protected object SaveViewState <T>(T itemCollection)
        {
            var    baseState  = base.SaveViewState();
            object itemsState = null;
            var    count      = 0;

            var countProperty = itemCollection.GetType().GetProperty("Count");

            if (countProperty != null)
            {
                int.TryParse(countProperty.GetValue(itemCollection, null).ToString(), out count);
            }

            if ((itemCollection != null) && (count > 0))
            {
                itemsState = ((IStateManager)itemCollection).SaveViewState();
            }

            if (Should.AnyBeNonNull(baseState, itemsState))
            {
                var savedState = new object[]
                {
                    baseState,
                    itemsState
                };

                return(savedState);
            }
            return(null);
        }