code: func (pag *Paginator) NextPage() (interface{}, error) {
  	type pagination struct {
  		TotalCount  int `json:"totalCount"`
  		PageCount   int `json:"pageCount"`
  		CurrentPage int `json:"currentPage"`
  		PerPage     int `json:"perPage"`
  	}
  	rawType := reflect.StructOf([]reflect.StructField{
  		{
  			Name: "Data",
  			Type: reflect.SliceOf(pag.structType),
  			Tag:  "json:\"data\"",
  		},
  		{
  			Name: "Pagination",
  			Type: reflect.TypeOf(pagination{}),
  			Tag:  "json:\"pagination\"",
  		},
  	})
  	rawVal := reflect.New(rawType)
  
  	if err := pag.client.Request(rawVal.Interface(), http.MethodGet, fmt.Sprintf("%s?page=%d", pag.endpoint, pag.nextPage), nil); err != nil {
  		return nil, err
  	}
  
  	data := rawVal.Elem().FieldByName("Data").Interface()
  	pageInfo := rawVal.Elem().FieldByName("Pagination").Interface().(pagination)
  
  	// If no more items are available, a page with 0 elements is returned.
  	if pag.nextPage > pageInfo.PageCount {
  		return data, io.EOF
  	}
  
  	pag.nextPage++
  	return data, nil
  }
docs: // NextPage queries the next page from the MessageBird API.
  //
  // The interface{} contains a slice of the type this paginator handles.
  //
  // When no more items are available, an empty slice and io.EOF are returned.
  // If another kind of error occurs, nil and and the error are returned.