public function setValue(QtiDatatype $value = null)
    {
        if (Utils::isBaseTypeCompliant($this->getBaseType(), $value) && Utils::isCardinalityCompliant($this->getCardinality(), $value)) {
            $this->value = $value;
        } else {
            Utils::throwBaseTypeTypingError($this->baseType, $value);
        }
    }