LETRA A
Errei a questão e confesso que tive que pesquisar bastante para entender, se você tiver conhecimento prévio de expressões Lambda e Method Reference já ajuda demais.
Mas vamos ao que interessa:
IntStream é uma interface: IntStream é um fluxo de valores int primitivos. Faz parte do pacote java.util.stream, e você pode encontrar muitas das mesmas funções que no Stream <T> normal. Também existem streams para lidar com primitivos double e long.- Fonte(http://www.deadcoderising.com/2015-05-19-java-8-replace-traditional-for-loops-with-intstreams/)
iterate é um Método Estático, na documentação da Oracle o iterate recebe apenas 2 PARÂMETROS, o que de cara nos permite reconhecer o erro da questão: static IntStream iterate(int seed, IntUnaryOperator f).
O Código que compilou no meu PC
IntStream
.iterate(2, n-> n*2)
.filter(n -> n > 0 && n < 20)
.forEach(System.out::println);
------
.iterate(2, n-> n*2) -> Seed é o valor original de N - UnaryOperator é a operação que será aplica em cima de N
.filter(n -> n > 0 && n < 20) -> filter significa uma condição de filtro para parar o laço(Tentei colocar o filter só com 'n<20' mas não deu certo). Achei algumas fontes falando que atualmente existe o método takeWhile(ConditionalOperator co), que nos permitiria usar somente 'n<20', porém não consegui usá-lo, provavelmente por que não atualizei o meu java.
Desculpem-me se houver algum erro ou a implementação estiver um pouco porca, mas foi o conhecimento que consegui formular para poder responder essa questão. Quem puder adicionar mais cometários com certeza ajudará muito!
Fontes:
https://stackoverflow.com/questions/40358827/intstream-iterate-in-steps
https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html
https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html#iterate-int-java.util.function.IntUnaryOperator-
http://www.deadcoderising.com/2015-05-19-java-8-replace-traditional-for-loops-with-intstreams/