public Task Execute(Uri recentFeedUri, EventProcessor eventProcessor, HttpResourceClient httpResourceClient, ClientState clientState) { var entry = feed.Items.ElementAt(entryIndex); if (!clientState.HaveAlreadyProcessed(entry)) { encounteredItems.Add(entry); if (feed.Items.Count() > entryIndex + 1) { return new NavigateEntryTask(feed, entryIndex + 1, encounteredItems); } return new NavigatePreviousArchiveTask(feed, encounteredItems); } return new ProcessItemsTask(encounteredItems); }