code: func (c *Client) AbandonChange(ctx context.Context, changeID string, ai *AbandonInput) (*Change, error) {
  	var resp Change
  	path := fmt.Sprintf("a/changes/%s/abandon", url.PathEscape(changeID))
  	if _, err := c.post(ctx, path, ai, &resp); err != nil {
  		return nil, err
  	}
  	return &resp, nil
  }
docs: // AbandonChange abandons an existing change in Gerrit.
  //
  // Returns a Change referenced by changeID, with status ABANDONED, if
  // abandoned.
  //
  // AbandonInput is optional (that is, may be nil).
  //
  // 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