public int size() {
        if (!beforeFirst) {
            throw new RuntimeException("next already called; to get remaining item count use itemsLeft");
        }
        if ((candidates == null) || (candidates.isEmpty())) {
            return 0;
        }
        return candidates.size();
    }