code: def add(self, name, mech, usage='both',
              init_lifetime=None, accept_lifetime=None, impersonator=None,
              store=None):
          if store is not None and impersonator is not None:
              raise ValueError('You cannot use both the `impersonator` and '
                               '`store` arguments at the same time')
          if store is not None:
              if rcred_cred_store is None:
                  raise NotImplementedError("Your GSSAPI implementation does "
                                            "not have support for manipulating "
                                            "credential stores")
              store = _encode_dict(store)
              res = rcred_cred_store.add_cred_from(store, self, name, mech,
                                                   usage, init_lifetime,
                                                   accept_lifetime)
          elif impersonator is not None:
              if rcred_s4u is None:
                  raise NotImplementedError("Your GSSAPI implementation does "
                                            "not have support for S4U")
              res = rcred_s4u.add_cred_impersonate_name(self, impersonator,
                                                        name, mech, usage,
                                                        init_lifetime,
                                                        accept_lifetime)
          else:
              res = rcreds.add_cred(self, name, mech, usage, init_lifetime,
                                    accept_lifetime)
          return Credentials(res.creds)