public <U>MonoThenIgnore<U> shift(Mono<U> newLast){
  Objects.requireNonNull(newLast,"newLast");
  Mono<?>[] a=ignore;
  int n=a.length;
  Mono<?>[] b=new Mono[n + 1];
  System.arraycopy(a,0,b,0,n);
  b[n]=last;
  return new MonoThenIgnore<>(b,newLast);
}

public < U > MonoThenIgnore < U > shift ( Mono < U > newLast ) { Objects . requireNonNull ( newLast , "newLast" ) ; Mono < ? > [ ] a = ignore ; int n = a . length ; Mono < ? > [ ] b = new Mono [ n + 1 ] ; System . arraycopy ( a , 0 , b , 0 , n ) ; b [ n ] = last ; return new MonoThenIgnore < > ( b , newLast ) ; }
shifts the current last mono into the ignore array and sets up a new last mono instance .
