content: package com.annimon.stream.operator;
  
  import com.annimon.stream.function.LongPredicate;
  import com.annimon.stream.iterator.PrimitiveExtIterator;
  import com.annimon.stream.iterator.PrimitiveIterator;
  import org.jetbrains.annotations.NotNull;
  
  public class LongDropWhile extends PrimitiveExtIterator.OfLong {
  
      private final PrimitiveIterator.OfLong iterator;
      private final LongPredicate predicate;
  
      public LongDropWhile(
              @NotNull PrimitiveIterator.OfLong iterator,
              @NotNull LongPredicate predicate) {
          this.iterator = iterator;
          this.predicate = predicate;
      }
  
      @Override
      protected void nextIteration() {
          if (!isInit) {
              // Skip first time
              while (hasNext = iterator.hasNext()) {
                  next = iterator.nextLong();
                  if (!predicate.test(next)) {
                      return;
                  }
              }
          }
  
          hasNext = hasNext && iterator.hasNext();
          if (!hasNext) return;
  
          next = iterator.nextLong();
      }
  }
  