void BuildSystemManagerInfo(AbcFile abc, AbcInstance instance) { var objType = abc.BuiltinTypes.Object; if (_cacheInfoObject) { var method = instance.DefineMethod(Sig.@this("$info$", objType), null); _compiler.AddLateMethod(method, BuildSystemManagerInfo); var infoField = instance.DefineSlot("__info", AvmTypeCode.Object); instance.DefineMethod( Sig.@virtual("info", objType).@override(), code => { code.LoadThis(); code.GetProperty(infoField); var br = code.IfNotNull(); code.LoadThis(); code.LoadThis(); code.Call(method); code.SetProperty(infoField); br.BranchTarget = code.Label(); code.LoadThis(); code.GetProperty(infoField); code.ReturnValue(); }); } else { var method = instance.DefineMethod(Sig.@virtual("info", objType).@override(), null); _compiler.AddLateMethod(method, BuildSystemManagerInfo); } }