static public function valueToRuntime($v, $baseType)
    {
        if ($v !== null) {

            if (is_int($v) === true) {

                if ($baseType === -1 || $baseType === BaseType::INTEGER) {
                    return new QtiInteger($v);
                } elseif ($baseType === BaseType::INT_OR_IDENTIFIER) {
                    return new QtiIntOrIdentifier($v);
                }
            } elseif (is_string($v) === true) {

                if ($baseType === BaseType::IDENTIFIER) {
                    return new QtiIdentifier($v);
                }
                if ($baseType === -1 || $baseType === BaseType::STRING) {
                    return new QtiString($v);
                } elseif ($baseType === BaseType::URI) {
                    return new QtiUri($v);
                } elseif ($baseType === BaseType::INT_OR_IDENTIFIER) {
                    return new QtiIntOrIdentifier($v);
                }
            } elseif (is_float($v) === true) {
                return new QtiFloat($v);
            } elseif (is_bool($v) === true) {
                return new QtiBoolean($v);
            }

        }

        return $v;
    }