original_string: public function finish_question($slot, $timestamp = null) {
          $qa = $this->get_question_attempt($slot);
          $qa->finish($timestamp);
          $this->observer->notify_attempt_modified($qa);
      }
code: public function finish_question($slot, $timestamp = null) {
          $qa = $this->get_question_attempt($slot);
          $qa->finish($timestamp);
          $this->observer->notify_attempt_modified($qa);
      }
code_tokens: public function finish_question ( $ slot , $ timestamp = null ) { $ qa = $ this -> get_question_attempt ( $ slot ) ; $ qa -> finish ( $ timestamp ) ; $ this -> observer -> notify_attempt_modified ( $ qa ) ; }
docstring: Finish the active phase of an attempt at a question.
  
  This is an external act of finishing the attempt. Think, for example, of
  the 'Submit all and finish' button in the quiz. Some behaviours,
  (for example, immediatefeedback) give a way of finishing the active phase
  of a question attempt as part of a {@link process_action()} call.
  
  After the active phase is over, the only changes possible are things like
  manual grading, or changing the flag state.
  
  @param int $slot the number used to identify this question within this usage.
docstring_tokens: Finish the active phase of an attempt at a question .