code: func (fr *FileReader) ForeachChunk(ctx context.Context, fn func(schemaPath []blob.Ref, p BytesPart) error) error {
  	return fr.foreachChunk(ctx, fn, nil)
  }
docs: // ForeachChunk calls fn for each chunk of fr, in order.
  //
  // The schemaPath argument will be the path from the "file" or "bytes"
  // schema blob down to possibly other "bytes" schema blobs, the final
  // one of which references the given BytesPart. The BytesPart will be
  // the actual chunk. The fn function will not be called with
  // BytesParts referencing a "BytesRef"; those are followed recursively
  // instead. The fn function must not retain or mutate schemaPath.
  //
  // If fn returns an error, iteration stops and that error is returned
  // from ForeachChunk. Other errors may be returned from ForeachChunk
  // if schema blob fetches fail.