private IList<BuildStatus> GetChangedBuildStatuses(BuildStatus[] allBuildStatuses)
{
var oldBuildStatus = _previousBuildStatuses;
_previousBuildStatuses = allBuildStatuses;
var changedBuildStatuses = from newStatus in allBuildStatuses
from oldStatus in oldBuildStatus.Where(s => s.BuildDefinitionId == newStatus.BuildDefinitionId).DefaultIfEmpty()
where DidBuildStatusChange(oldStatus, newStatus)
select newStatus;
Debug.Assert(changedBuildStatuses != null, "changedBuildStatuses should not be null");
Debug.Assert(PreviousWorkingOrBrokenBuildStatus != null, "PreviousWorkingOrBrokenBuildStatus should never be null");
Debug.Assert(PreviousBuildStatus != null, "PreviousBuildStatus should never be null");
return changedBuildStatuses.ToList();
}