private void BuildSystemManager(AbcFile abc) { var superType = _compiler.ImportType(abc, "mx.managers.SystemManager"); var flexModuleFactoryInterface = FlexTypes.GetFlexModuleFactoryInterface(abc); if (HasCrossDomainRsls) { // Cause the CrossDomainRSLItem class to be linked into this application. var crossDomainRSLItem = _compiler.ImportType(abc, "mx.core.CrossDomainRSLItem"); Debug.Assert(crossDomainRSLItem != null); } var instance = new AbcInstance(true) { Name = DefineSystemManagerName(abc), Flags = AbcClassFlags.FinalSealed, //ProtectedNamespace = abc.DefineProtectedNamespace(NameMxSysManager), Type = _compiler.FlexAppType, BaseTypeName = superType.Name, BaseInstance = superType }; instance.Interfaces.Add(flexModuleFactoryInterface.Name); instance.Initializer = abc.DefineMethod( Sig.@void(), code => { code.ConstructSuper(); code.ReturnVoid(); }); instance.Class.Initializer = abc.DefineEmptyMethod(); abc.AddInstance(instance); _mxSystemManager = instance; BuildSystemManagerCreate(abc, instance); BuildSystemManagerInfo(abc, instance); abc.DefineScript(instance); abc.DefineEmptyScript(); }