original_string: protected function formulation(question_attempt $qa, qbehaviour_renderer $behaviouroutput,
              qtype_renderer $qtoutput, question_display_options $options) {
          $output = '';
          $output .= html_writer::empty_tag('input', array(
                  'type' => 'hidden',
                  'name' => $qa->get_control_field_name('sequencecheck'),
                  'value' => $qa->get_sequence_check_count()));
          $output .= $qtoutput->formulation_and_controls($qa, $options);
          if ($options->clearwrong) {
              $output .= $qtoutput->clear_wrong($qa);
          }
          $output .= html_writer::nonempty_tag('div',
                  $behaviouroutput->controls($qa, $options), array('class' => 'im-controls'));
          return $output;
      }
code: protected function formulation(question_attempt $qa, qbehaviour_renderer $behaviouroutput,
              qtype_renderer $qtoutput, question_display_options $options) {
          $output = '';
          $output .= html_writer::empty_tag('input', array(
                  'type' => 'hidden',
                  'name' => $qa->get_control_field_name('sequencecheck'),
                  'value' => $qa->get_sequence_check_count()));
          $output .= $qtoutput->formulation_and_controls($qa, $options);
          if ($options->clearwrong) {
              $output .= $qtoutput->clear_wrong($qa);
          }
          $output .= html_writer::nonempty_tag('div',
                  $behaviouroutput->controls($qa, $options), array('class' => 'im-controls'));
          return $output;
      }
code_tokens: protected function formulation ( question_attempt $ qa , qbehaviour_renderer $ behaviouroutput , qtype_renderer $ qtoutput , question_display_options $ options ) { $ output = '' ; $ output .= html_writer :: empty_tag ( 'input' , array ( 'type' => 'hidden' , 'name' => $ qa -> get_control_field_name ( 'sequencecheck' ) , 'value' => $ qa -> get_sequence_check_count ( ) ) ) ; $ output .= $ qtoutput -> formulation_and_controls ( $ qa , $ options ) ; if ( $ options -> clearwrong ) { $ output .= $ qtoutput -> clear_wrong ( $ qa ) ; } $ output .= html_writer :: nonempty_tag ( 'div' , $ behaviouroutput -> controls ( $ qa , $ options ) , array ( 'class' => 'im-controls' ) ) ; return $ output ; }
docstring: Generate the display of the formulation part of the question. This is the
  area that contains the quetsion text, and the controls for students to
  input their answers. Some question types also embed feedback, for
  example ticks and crosses, in this area.
  
  @param question_attempt $qa the question attempt to display.
  @param qbehaviour_renderer $behaviouroutput the renderer to output the behaviour
  specific parts.
  @param qtype_renderer $qtoutput the renderer to output the question type
  specific parts.
  @param question_display_options $options controls what should and should not be displayed.
  @return HTML fragment.
docstring_tokens: Generate the display of the formulation part of the question . This is the area that contains the quetsion text and the controls for students to input their answers . Some question types also embed feedback for example ticks and crosses in this area .