System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
		{
			//internal void Initialize(ProgressUpdateCallback progressCallback, IsCanceledCallback isCanceledCallback, PhaseChangedCallback phaseChangedCallback)
			var types = new Type[]
			            {
							_progressUpdateCallbackType, 
							_isCanceledCallbackType,
							_phaseChangedCallbackType
			            };

			var nullProg = Convert.ChangeType(null, _progressUpdateCallbackType);
			var nullIsCanceled = Convert.ChangeType(null, _isCanceledCallbackType);
			var nullPhase = Convert.ChangeType(null, _phaseChangedCallbackType);

			dynamic folderDiffInfo = new AccessPrivateWrapper(FolderDiff.m_folderDifferenceInfo);
			if (folderDiffInfo.Count == 0) {

				var initMethod = FolderDiff._wrapped.GetType().GetMethod("Initialize", AccessPrivateWrapper.flags, null, types, null);
				initMethod.Invoke(FolderDiff._wrapped, new[] { nullProg, nullIsCanceled, nullPhase });
				bool? filterLocalPathsOnly = false;
				string filter = "";
				var view = MakeViewEnum();
				dynamic options = new AccessPrivateWrapper(FolderDiff.Options);
				options.UseRegistryDefaults = false;
				if (view != null) {
					options.ViewOptions = view;
				}
				FolderDiff.Compare();
			}
			return FolderDiff.GetEnumerator();
		}
		/// <summary>
		/// Gets the folder differences from the FolderDiff.
		/// </summary>
		/// <returns></returns>
		public override System.Collections.Generic.List<IFolderDiffEntry> GetDifferentFilePaths() {
			var results = new List<IFolderDiffEntry>();
			var o = new List<object>();
			foreach (var x in _folderDiff) {
				dynamic folder = new AccessPrivateWrapper(x);
				dynamic val = new AccessPrivateWrapper(folder.Value);
				dynamic files = new AccessPrivateWrapper(val.Files);
				dynamic wrappedObject = files._wrapped;
				foreach (var f in wrappedObject) {
					dynamic f2 = new AccessPrivateWrapper(f);
					if (f2 != null)
					{
						var entry = new FolderDiffEntry(f2);
						entry.IsPath2Local = _folderDiff.IsPath2Local;
						entry.Path2VersionSpec = _folderDiff.Path2VersionSpec;
						results.Add(entry);
					}

				}
			}
			return results;
		}
		public FolderDiffWrapper(object folderDiffObject, Assembly vcControlsAssembly)
		{
			FolderDiff = new AccessPrivateWrapper(folderDiffObject);
			_vcControlsAssembly = vcControlsAssembly;
			SetupTypesFromAssembly();
		}