### Question:
NodeConjunctionScorer extends NodeScorer { @Override public boolean skipToCandidate(final int target) throws IOException { if (lastDocument == DocsAndNodesIterator.NO_MORE_DOC) { return false; } else if (scorers[(scorers.length - 1)].doc() < target) { scorers[(scorers.length - 1)].skipToCandidate(target); } final boolean more = this.doNext(); lastDocument = scorers[scorers.length - 1].doc(); lastNode = scorers[scorers.length - 1].node(); return more; } NodeConjunctionScorer(final Weight weight, final float coord,
                               final Collection<NodeScorer> scorers);  NodeConjunctionScorer(final Weight weight, final float coord,
                               final NodeScorer ... scorers); @Override boolean skipToCandidate(final int target); @Override int doc(); @Override IntsRef node(); @Override boolean nextCandidateDocument(); @Override boolean nextNode(); @Override int freqInNode(); @Override float scoreInNode(); @Override String toString();  }### Answer:
@Test public void testSkipToCandidate() throws Exception { final ArrayList<String> docs = new ArrayList<String>(); for (int i = 0; i < 32; i++) { docs.add("<http: docs.add("<http: } this.addDocuments(docs); final NodeScorer scorer = this.getScorer( nbq(must("renaud"), must("delbru")) ); assertTrue(scorer.skipToCandidate(16)); assertEquals(16, scorer.doc()); assertEquals(node(-1), scorer.node()); assertTrue(scorer.nextNode()); assertEquals(node(0,1), scorer.node()); assertFalse(scorer.nextNode()); assertEquals(DocsAndNodesIterator.NO_MORE_NOD, scorer.node()); assertTrue(scorer.skipToCandidate(41)); assertEquals(42, scorer.doc()); assertEquals(node(-1), scorer.node()); assertTrue(scorer.skipToCandidate(42)); assertEquals(42, scorer.doc()); assertEquals(node(-1), scorer.node()); assertTrue(scorer.nextNode()); assertEquals(node(0,1), scorer.node()); assertFalse(scorer.nextNode()); assertEquals(DocsAndNodesIterator.NO_MORE_NOD, scorer.node()); assertFalse(scorer.skipToCandidate(75)); assertEndOfStream(scorer); }