docs: def create_gist(self, public, files, description=github.GithubObject.NotSet):
          """
          :calls: `POST /gists <http://developer.github.com/v3/gists>`_
          :param public: bool
          :param files: dict of string to :class:`github.InputFileContent.InputFileContent`
          :param description: string
          :rtype: :class:`github.Gist.Gist`
          """
          assert isinstance(public, bool), public
          assert all(isinstance(element, github.InputFileContent) for element in files.itervalues()), files
          assert description is github.GithubObject.NotSet or isinstance(description, (str, unicode)), description
          post_parameters = {
              "public": public,
              "files": {key: value._identity for key, value in files.iteritems()},
          }
          if description is not github.GithubObject.NotSet:
              post_parameters["description"] = description
          headers, data = self._requester.requestJsonAndCheck(
              "POST",
              "/gists",
              input=post_parameters
          )
          return github.Gist.Gist(self._requester, headers, data, completed=True)