def METHOD_NAME(self) -> None:
    request = CustomStudyRequest(deck_id=self.deck_id)
    if self.radioIdx == RADIO_NEW:
        request.new_limit_delta = self.form.spin.value()
    elif self.radioIdx == RADIO_REV:
        request.review_limit_delta = self.form.spin.value()
    elif self.radioIdx == RADIO_FORGOT:
        request.forgot_days = self.form.spin.value()
    elif self.radioIdx == RADIO_AHEAD:
        request.review_ahead_days = self.form.spin.value()
    elif self.radioIdx == RADIO_PREVIEW:
        request.preview_days = self.form.spin.value()
    else:
        request.cram.card_limit = self.form.spin.value()
        cram_type = self.form.cardType.currentRow()
        if cram_type == TYPE_NEW:
            request.cram.kind = CustomStudyRequest.Cram.CRAM_KIND_NEW
        elif cram_type == TYPE_DUE:
            request.cram.kind = CustomStudyRequest.Cram.CRAM_KIND_DUE
        elif cram_type == TYPE_REVIEW:
            request.cram.kind = CustomStudyRequest.Cram.CRAM_KIND_REVIEW
        else:
            request.cram.kind = CustomStudyRequest.Cram.CRAM_KIND_ALL
        def on_done(include: list[str], exclude: list[str]) -> None:
            request.cram.tags_to_include.extend(include)
            request.cram.tags_to_exclude.extend(exclude)
            self._create_and_close(request)
        # continues in background
        TagLimit(self, self.defaults.tags, on_done)
        return
    # other cases are synchronous
    self._create_and_close(request)