code: func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo string, number int, pull *PullRequest) (*PullRequest, *Response, error) {
  	if pull == nil {
  		return nil, nil, fmt.Errorf("pull must be provided")
  	}
  
  	u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number)
  
  	update := &pullRequestUpdate{
  		Title:               pull.Title,
  		Body:                pull.Body,
  		State:               pull.State,
  		MaintainerCanModify: pull.MaintainerCanModify,
  	}
  	if pull.Base != nil {
  		update.Base = pull.Base.Ref
  	}
  
  	req, err := s.client.NewRequest("PATCH", u, update)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	// TODO: remove custom Accept header when this API fully launches.
  	acceptHeaders := []string{mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}
  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
  
  	p := new(PullRequest)
  	resp, err := s.client.Do(ctx, req, p)
  	if err != nil {
  		return nil, resp, err
  	}
  
  	return p, resp, nil
  }
docs: // Edit a pull request.
  // pull must not be nil.
  //
  // The following fields are editable: Title, Body, State, Base.Ref and MaintainerCanModify.
  // Base.Ref updates the base branch of the pull request.
  //
  // GitHub API docs: https://developer.github.com/v3/pulls/#update-a-pull-request