public override void DeleteFiles(IEnumerable <IPackageFile> files, string rootDir)
        {
            HashSet <string> filesToPendDelete = new HashSet <string>();

            foreach (var file in files)
            {
                var fullPath = GetFullPath(Path.Combine(rootDir, file.Path));
                if (FileExists(fullPath))
                {
                    if (FileSystemExtensions.ContentEqual(this, fullPath, file.GetStream))
                    {
                        filesToPendDelete.Add(fullPath);
                    }
                    else
                    {
                        Logger.Log(MessageLevel.Warning, NuGetResources.Warning_FileModified, fullPath);
                    }
                }
            }

            // undo pending changes
            List <ITfsPendingChange> pendingChanges = Workspace.GetPendingChanges(
                GetFullPath(rootDir), RecursionType.Full).ToList();

            Workspace.Undo(pendingChanges);

            foreach (var pendingChange in pendingChanges)
            {
                if (pendingChange.IsAdd)
                {
                    filesToPendDelete.Remove(pendingChange.LocalItem);
                    base.DeleteFile(pendingChange.LocalItem);
                }
            }

            Workspace.PendDelete(filesToPendDelete, RecursionType.None);
        }