public ADTNode < S , I , O > sift ( final SymbolQueryOracle < I , O > oracle , final Word < I > word , final ADTNode < S , I , O > subtree ) { ADTNode < S , I , O > current = subtree ; while ( ! ADTUtil . isLeafNode ( current ) ) { current = current . sift ( oracle , word ) ; } return current ; }
Successively sifts a word through the ADT induced by the given node . Stops when reaching a leaf .