def save!(options={})
      if persisted?
        cf_dict = update
      else
        cf_dict = create(options)
        self.ptr = cf_dict[Sec::Value::REF].to_ptr
        self.retain.release_on_gc
      end
      @unsaved_password = nil
      update_self_from_dictionary(cf_dict)
      cf_dict.release
      self
    end
def save!(options={})
      if persisted?
        cf_dict = update
      else
        cf_dict = create(options)
        self.ptr = cf_dict[Sec::Value::REF].to_ptr
        self.retain.release_on_gc
      end
      @unsaved_password = nil
      update_self_from_dictionary(cf_dict)
      cf_dict.release
      self
    end
Attempts to update the keychain with any changes made to the item
 or saves a previously unpersisted item
 @param [optional, Hash] options extra options when saving the item
 @option options [Keychain::Keychain] :keychain when saving an unsaved item, they keychain to save it in
 @return [Keychain::Item] returns the item