return result;
}
public synchronized int[] getFunnelCounts(String startDate, String endDate, String[] funnelStepsEventTypes,
int numDaysToCompleteFunnel, List<Filter> eventFilters, Filter userFilter) {
IdList firstStepEventIdList = new MemIdList(new long[10000], 0);
int[] funnelStepsEventTypeIds = getEventTypeIds(funnelStepsEventTypes);
List<Integer> userIdsList = Lists.newArrayList();
Set<Integer> userIdsSet = Sets.newHashSet();
EventIndex.Callback aggregateUserIdsCallback = new AggregateUserIds(eventStorage, userStorage,
firstStepEventIdList, eventFilters.get(0), userFilter, userIdsList, userIdsSet);
shardedEventIndex.enumerateEventIds(funnelStepsEventTypes[0], startDate, endDate,
aggregateUserIdsCallback);
int[] numFunnelStepsMatched = new int[funnelStepsEventTypes.length];
IdList.Iterator firstStepEventIdIterator = firstStepEventIdList.iterator();
if (funnelStepsEventTypes.length == 1) {
for (int userId : userIdsList) {
numFunnelStepsMatched[0]++;
}
} else {