code: public static LongIteratorEx oF(final Supplier<long[]> arraySupplier) {
          N.checkArgNotNull(arraySupplier, "arraySupplier");
  
          return new LongIteratorEx() {
              private LongIteratorEx iterEx = null;
              private boolean isInitialized = false;
  
              @Override
              public boolean hasNext() {
                  if (isInitialized == false) {
                      init();
                  }
  
                  return iterEx.hasNext();
              }
  
              @Override
              public long nextLong() {
                  if (isInitialized == false) {
                      init();
                  }
  
                  return iterEx.nextLong();
              }
  
              @Override
              public void skip(long n) {
                  N.checkArgNotNegative(n, "n");
  
                  if (isInitialized == false) {
                      init();
                  }
  
                  iterEx.skip(n);
              }
  
              @Override
              public long count() {
                  if (isInitialized == false) {
                      init();
                  }
  
                  return iterEx.count();
              }
  
              private void init() {
                  if (isInitialized == false) {
                      isInitialized = true;
                      long[] aar = arraySupplier.get();
                      iterEx = LongIteratorEx.of(aar);
                  }
              }
          };
      }
docs: Lazy evaluation.
  
  @param arraySupplier
  @return