code: def validate(self):
          
          try:
              assert self.kind == content_kinds.EXERCISE, "Assumption Failed: Node should be an exercise"
  
              # Check if questions are correct
              assert any(self.questions), "Assumption Failed: Exercise does not have a question"
              assert all(filter(lambda q: q.validate(), self.questions)), "Assumption Failed: Exercise has invalid question"
              assert self.extra_fields['mastery_model'] in MASTERY_MODELS, "Assumption Failed: Unrecognized mastery model {}".format(self.extra_fields['mastery_model'])
              return super(ExerciseNode, self).validate()
          except AssertionError as ae:
              raise InvalidNodeException("Invalid node ({}): {} - {}".format(ae.args[0], self.title, self.__dict__))
docs: validate: Makes sure exercise is valid
              Args: None
              Returns: boolean indicating if exercise is valid