public static void DisposeAndClear <T>(this T[] source)
        {
            if (source != null)
            {
                for (int i = 0; i < source.Length; i++)
                //for (int i = source.Length - 1; i >= 0; i--)
                {
                    object o = source[i];
                    DisposeHelper.DisposeItem(o);
                }

                /*foreach (object o in source)
                 * {
                 * }*/
            }
        }