private static function restoreTypesOfValues($deserialized)
{
$result = [];
foreach ($deserialized as $key => $value) {
if (is_array($value)) {
$result[$key] = self::restoreTypesOfValues($value);
} else {
if (Strings::startsWith($value, self::$numberMarker)) {
// strip the marker and convert to number
$result[$key] = str_replace(self::$numberMarker, '', $value) + 0;
} elseif (Strings::startsWith($value, self::$nullMarker)) {
$result[$key] = null;
} else {
$result[$key] = self::unescapeString($value);
}
}
}
return $result;
}