original_string: public function regrade_question($slot, $finished = false, $newmaxmark = null) {
          $oldqa = $this->get_question_attempt($slot);
          if (is_null($newmaxmark)) {
              $newmaxmark = $oldqa->get_max_mark();
          }
  
          $newqa = new question_attempt($oldqa->get_question(), $oldqa->get_usage_id(),
                  $this->observer, $newmaxmark);
          $newqa->set_database_id($oldqa->get_database_id());
          $newqa->set_slot($oldqa->get_slot());
          $newqa->regrade($oldqa, $finished);
  
          $this->questionattempts[$slot] = $newqa;
          $this->observer->notify_attempt_modified($newqa);
      }
code: public function regrade_question($slot, $finished = false, $newmaxmark = null) {
          $oldqa = $this->get_question_attempt($slot);
          if (is_null($newmaxmark)) {
              $newmaxmark = $oldqa->get_max_mark();
          }
  
          $newqa = new question_attempt($oldqa->get_question(), $oldqa->get_usage_id(),
                  $this->observer, $newmaxmark);
          $newqa->set_database_id($oldqa->get_database_id());
          $newqa->set_slot($oldqa->get_slot());
          $newqa->regrade($oldqa, $finished);
  
          $this->questionattempts[$slot] = $newqa;
          $this->observer->notify_attempt_modified($newqa);
      }
code_tokens: public function regrade_question ( $ slot , $ finished = false , $ newmaxmark = null ) { $ oldqa = $ this -> get_question_attempt ( $ slot ) ; if ( is_null ( $ newmaxmark ) ) { $ newmaxmark = $ oldqa -> get_max_mark ( ) ; } $ newqa = new question_attempt ( $ oldqa -> get_question ( ) , $ oldqa -> get_usage_id ( ) , $ this -> observer , $ newmaxmark ) ; $ newqa -> set_database_id ( $ oldqa -> get_database_id ( ) ) ; $ newqa -> set_slot ( $ oldqa -> get_slot ( ) ) ; $ newqa -> regrade ( $ oldqa , $ finished ) ; $ this -> questionattempts [ $ slot ] = $ newqa ; $ this -> observer -> notify_attempt_modified ( $ newqa ) ; }
docstring: Regrade a question in this usage. This replays the sequence of submitted
  actions to recompute the outcomes.
  @param int $slot the number used to identify this question within this usage.
  @param bool $finished whether the question attempt should be forced to be finished
  after the regrade, or whether it may still be in progress (default false).
  @param number $newmaxmark (optional) if given, will change the max mark while regrading.
docstring_tokens: Regrade a question in this usage . This replays the sequence of submitted actions to recompute the outcomes .