docs: def update_release(self, name, message, draft=False, prerelease=False,
                         tag_name=github.GithubObject.NotSet,
                         target_commitish=github.GithubObject.NotSet):
          """
          :calls: `PATCH /repos/:owner/:repo/releases/:release_id <https://developer.github.com/v3/repos/releases/#edit-a-release>`_
          :rtype: :class:`github.GitRelease.GitRelease`
          """
          assert tag_name is github.GithubObject.NotSet              \
              or isinstance(tag_name, (str, unicode)),               \
              'tag_name must be a str/unicode object'
          assert target_commitish is github.GithubObject.NotSet      \
              or isinstance(target_commitish, (str, unicode)),       \
              'target_commitish must be a str/unicode object'
          assert isinstance(name, (str, unicode)), name
          assert isinstance(message, (str, unicode)), message
          assert isinstance(draft, bool), draft
          assert isinstance(prerelease, bool), prerelease
          if tag_name is github.GithubObject.NotSet:
              tag_name = self.tag_name
          post_parameters = {
              "tag_name": tag_name,
              "name": name,
              "body": message,
              "draft": draft,
              "prerelease": prerelease,
          }
          # Do not set target_commitish to self.target_commitish when ommited, just don't send it
          # alltogether in that case, in order to match the Github API behaviour. Only send it when set.
          if target_commitish is not github.GithubObject.NotSet:
              post_parameters['target_commitish'] = target_commitish
          headers, data = self._requester.requestJsonAndCheck(
              "PATCH",
              self.url,
              input=post_parameters
          )
          return github.GitRelease.GitRelease(self._requester, headers, data, completed=True)