Есть экземпляр gameData класса GameData, который содержит члены-переменные: level, score и пр.

Код AS3:
//Записываю gameData в SharedObject экземпляр:
var sharedObject:SharedObject = SharedObject.getLocal("profile");
sharedObject.data[“gameData”] = gameData;
//Далее перезапускаю игру и обращаюсь:
var sharedObject:SharedObject = SharedObject.getLocal("profile");
var gd: GameData = GameData (sharedObject.data.gameData);
//компилятор выдает ошибку, что не может привести тип к GameData, т.к. возвращаемый объект типа данных Object.
Фактически sharedObject.data.gameData – содержится объект типа Object, а не типа GameData, хотя и имеет все динамические члены-переменные (level, score) и пр.
Если сделать так, то все ок:

Код AS3:
var gd:*= sharedObject.data.gameData;
Почему, когда мы записывает экзепляр класса в SharedObject, то получаем на выходе тип Object, а не GameData ?