private static Type GetItemType(System.Collections.IEnumerable list)
        {
            Type enumerableType     = list.GetType();
            Type enumerableItemType = null;

            if (IsEnumerableType(enumerableType))
            {
                enumerableItemType = GetEnumerableItemType(enumerableType);
            }
            if ((enumerableItemType == null) || (enumerableItemType == typeof(object)))
            {
                IEnumerator enumerator = list.GetEnumerator();
                if (enumerator.MoveNext() && (enumerator.Current != null))
                {
                    return(enumerator.Current.GetType());
                }
            }
            return(enumerableItemType);
        }