original_string: public function add_question(question_definition $question, $maxmark = null) {
          $qa = new question_attempt($question, $this->get_id(), $this->observer, $maxmark);
          $qa->set_slot($this->next_slot_number());
          $this->questionattempts[$this->next_slot_number()] = $qa;
          $this->observer->notify_attempt_added($qa);
          return $qa->get_slot();
      }
code: public function add_question(question_definition $question, $maxmark = null) {
          $qa = new question_attempt($question, $this->get_id(), $this->observer, $maxmark);
          $qa->set_slot($this->next_slot_number());
          $this->questionattempts[$this->next_slot_number()] = $qa;
          $this->observer->notify_attempt_added($qa);
          return $qa->get_slot();
      }
code_tokens: public function add_question ( question_definition $ question , $ maxmark = null ) { $ qa = new question_attempt ( $ question , $ this -> get_id ( ) , $ this -> observer , $ maxmark ) ; $ qa -> set_slot ( $ this -> next_slot_number ( ) ) ; $ this -> questionattempts [ $ this -> next_slot_number ( ) ] = $ qa ; $ this -> observer -> notify_attempt_added ( $ qa ) ; return $ qa -> get_slot ( ) ; }
docstring: Add another question to this usage.
  
  The added question is not started until you call {@link start_question()}
  on it.
  
  @param question_definition $question the question to add.
  @param number $maxmark the maximum this question will be marked out of in
  this attempt (optional). If not given, $question->defaultmark is used.
  @return int the number used to identify this question within this usage.
docstring_tokens: Add another question to this usage .