public IEnumerator <ADObjectWrapper> GetEnumerator()
        {
            int batchSize = 500;
            var context   = SynchronizeContext.Current;

            var neededProperties = this.propertiesToGet ?? SynchronizeHelper.GetNeededProperties(ADSchemaType.Users);

            IEnumerable <SearchResult> aBatch;

            for (int i = 0; i < source.Count / batchSize; i++)
            {
                aBatch = GetBatchData(i * batchSize, batchSize, context, neededProperties);
                foreach (var item in aBatch)
                {
                    yield return(CreateADObjectWrapper(item, neededProperties, context));
                }
            }

            aBatch = GetBatchData(source.Count / batchSize * batchSize, source.Count % batchSize, context, neededProperties);

            foreach (var item in aBatch)
            {
                yield return(CreateADObjectWrapper(item, neededProperties, context));
            }
        }