code: @Override
      public boolean hasNext() {
          if (closed) {
              throw new IllegalStateException("Cursor has been closed");
          }
  
          if (cursor == null) {
              FindOperation<DBObject> operation = getQueryOperation(decoder);
              if (operation.getCursorType() == CursorType.Tailable) {
                  operation.cursorType(CursorType.TailableAwait);
              }
              initializeCursor(operation);
          }
  
          boolean hasNext = cursor.hasNext();
          setServerCursorOnFinalizer(cursor.getServerCursor());
          return hasNext;
      }
docs: Checks if there is another object available.
  
  <p><em>Note</em>: Automatically adds the {@link Bytes#QUERYOPTION_AWAITDATA} option to any cursors with the
  {@link Bytes#QUERYOPTION_TAILABLE} option set. For non blocking tailable cursors see {@link #tryNext }.</p>
  
  @return true if there is another object available
  @mongodb.driver.manual /core/cursors/#cursor-batches Cursor Batches