def METHOD_NAME(self, row: Dict[str, str]) -> CritiqueResponse:
    answers: Dict[str, Union[str, List[str]]] = {}
    for question in self._template.questions:
        if question.question_type == QuestionType.MULTIPLE_CHOICE:
            for option_index, option in enumerate(question.options):
                raw_answer = row[f"Answer.{question.name}.{option_index}.on"]
                if raw_answer == "true":
                    answers[question.name] = option
                    break
        elif question.question_type == QuestionType.CHECKBOX:
            checkbox_options: List[str] = []
            for option_index, option in enumerate(question.options):
                raw_answer = row[f"Answer.{question.name}.{option_index}.on"]
                if raw_answer == "true":
                    checkbox_options.append(option)
            answers[question.name] = checkbox_options
        elif question.question_type == QuestionType.FREE_RESPONSE:
            answers[question.name] = row[f"Answer.{question.name}"]
        else:
            raise ValueError(f"Unknown question_type: {question.question_type}")
    return CritiqueResponse(
        id=row["AssignmentId"],
        respondent_id=row["WorkerId"],
        answers=answers,
    )