func (lcbc *ListCollectionsBatchCursor) Next(ctx context.Context) bool {
	if !lcbc.bc.Next(ctx) {
		return false
	}
	if !lcbc.legacy {
		lcbc.currentBatch.Style = lcbc.bc.currentBatch.Style
		lcbc.currentBatch.Data = lcbc.bc.currentBatch.Data
		lcbc.currentBatch.ResetIterator()
		return true
	}
	lcbc.currentBatch.Style = bsoncore.SequenceStyle
	lcbc.currentBatch.Data = lcbc.currentBatch.Data[:0]
	var doc bsoncore.Document
	for {
		doc, lcbc.err = lcbc.bc.currentBatch.Next()
		if lcbc.err != nil {
			if lcbc.err == io.EOF {
				lcbc.err = nil
				break
			}
			return false
		}
		doc, lcbc.err = lcbc.projectNameElement(doc)
		if lcbc.err != nil {
			return false
		}
		lcbc.currentBatch.Data = append(lcbc.currentBatch.Data, doc...)
	}
	return true
}
Next indicates if there is another batch available. Returning false does not necessarily indicate
that the cursor is closed. This method will return false when an empty batch is returned.

If Next returns true, there is a valid batch of documents available. If Next returns false, there
is not a valid batch of documents available.
package driver
import (
	"context"
	"errors"
	"io"
	"strings"
	"go.mongodb.org/mongo-driver/x/bsonx/bsoncore"
)
type ListCollectionsBatchCursor struct {
	legacy       bool  
	bc           *BatchCursor
	currentBatch *bsoncore.DocumentSequence
	err          error
}
func NewListCollectionsBatchCursor(bc *BatchCursor) (*ListCollectionsBatchCursor, error) {
	if bc == nil {
		return nil, errors.New("batch cursor must not be nil")
	}
	return &ListCollectionsBatchCursor{bc: bc, currentBatch: new(bsoncore.DocumentSequence)}, nil
}
func NewLegacyListCollectionsBatchCursor(bc *BatchCursor) (*ListCollectionsBatchCursor, error) {
	if bc == nil {
		return nil, errors.New("batch cursor must not be nil")
	}
	return &ListCollectionsBatchCursor{legacy: true, bc: bc, currentBatch: new(bsoncore.DocumentSequence)}, nil
}
func (lcbc *ListCollectionsBatchCursor) ID() int64 {
	return lcbc.bc.ID()
}