code: func (c *Client) SetReview(ctx context.Context, changeID string, revisionID string, ri *ReviewInput) (*ReviewResult, error) {
  	var resp ReviewResult
  	path := fmt.Sprintf("a/changes/%s/revisions/%s/review", url.PathEscape(changeID), url.PathEscape(revisionID))
  	if _, err := c.post(ctx, path, ri, &resp); err != nil {
  		return nil, err
  	}
  	return &resp, nil
  }
docs: // SetReview sets a review on a revision, optionally also publishing
  // draft comments, setting labels, adding reviewers or CCs, and modifying
  // the work in progress property.
  //
  // Returns a ReviewResult which describes the applied labels and any added reviewers.
  //
  // The changeID parameter may be in any of the forms supported by Gerrit:
  //   - "4247"
  //   - "I8473b95934b5732ac55d26311a706c9c2bde9940"
  //   - etc. See the link below.
  // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-id
  //
  // The revisionID parameter may be in any of the forms supported by Gerrit:
  //   - "current"
  //   - a commit ID
  //   - "0" or the literal "edit" for a change edit
  //   - etc. See the link below.
  // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#revision-id