protected function add_penalty_declaration(ImsQtiWriter $item, $question)
 {
     if (!$this->has_penalty($question)) {
         return null;
     }
     $cardinality = ImsQtiWriter::CARDINALITY_SINGLE;
     $name = self::PENALTY;
     $base_type = ImsQtiWriter::BASETYPE_FLOAT;
     $score_outcome = $item->add_outcomeDeclaration($name, $cardinality, $base_type);
     $score_outcome->add_defaultValue()->add_value(0);
     return $score_outcome;
 }
 public function add_score_declaration(ImsQtiWriter $item, $question)
 {
     $score = $question->defaultgrade;
     $cardinality = ImsQtiWriter::CARDINALITY_SINGLE;
     $id = $this->score_id($question);
     $base_type = is_int($score) ? ImsQtiWriter::BASETYPE_INTEGER : ImsQtiWriter::BASETYPE_FLOAT;
     $result = $item->add_outcomeDeclaration($id, $cardinality, $base_type, $score);
     $result->add_defaultValue()->add_value(0);
     return $result;
 }