ActionScript 3 Mató al singleton

Cual será mi sorpresa cuando leyendo la documentación de AS3 me doy cuenta de que este no permite contructores privados, por ende para poder hacer un síngleton hay que tirar unas execpciones en el constructor al cual se le pasa un this como parámetro para verificar que el ejecutor sea la clase. Además de que se verifíca que el caller sea la función que adignada, que por cierto no puede ser un get implícito porque cuando haces una comparación cualquier get implicito te devolvería el valor asignado y nunca la función.

Un ejemplo de como hacerlo es así:

[ftf]
public class Singleton
private static var _instance : Singleton;
//Nótese el ‘public’ en el constructor
public function Singleton($caller : Function = null )
{
if ($caller != Singleton.getInstance )
{
//Ahora hasta hay que aclarar
throw new Error (“No puedes usar el constructor, ‘Singleton’ es un singleton”);
}
if (_instance != null )
{
//Nunca creí que tendría que tirar un error de este tipo
throw new Error (“Sólo puede existir un singleton” );
}
}
internal static function getInstance () : Singleton
{
if (_instance == null)
{
_instance = new Singleton(arguments.callee);
}
return _instance;
}
}
[/ftf]

Cabe mencionar que aunque se tirar excepciones el constructor sí se ejecuta, entonces habría que cachar la excepción y destruir la instancia creada.