Ancestor { Ancestor<S> skip() { return new Ancestor<>(logProbability, historyChain.skip(), bigramProvider); } private  Ancestor(double logProbability,
      HistoryChain<S> historyChain,
      @Nullable BiFunction<S, S, Bigram<S>> bigramProvider);   }
@Test void testSkip() { Ancestor<String> ancestor = Ancestor.createInitial(Ngram::create, "1", "2", "3", null); Ancestor<String> descendant = ancestor.skip(); assertEquals(descendant.getHistory("4"), Arrays.asList("1", "2", "3", "4", "4")); }