private void findOccurrences() {
        this.numberOfOccurrences = 0;
        int max = getMaxOccurrencesAllowed();
        
        ListIterator lit = this.listView.listIterator(dir);
        while (lit.hasNext() && this.numberOfOccurrences < max) {
            Object next = PrefixHunter.getFirstLeaf(dir, (Node)lit.next());
            
            if (!(next instanceof Matchable)) continue;
            
            Matchable cursor = (Matchable)next;
            
            if (cursor.depth()<this.wanted.depth()) break;  // too late: the "Matchable" wanted is deeper
            
            if (cursor.matches(this.wanted)) {
                this.occurrencesIndices.add(new Integer(lit.previousIndex()));
                this.numberOfOccurrences++;
            }
        }
    }