|  | library #lib; | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  | import "dart:ffi" as ffi; | 
|  | import "dart:_internal" as _in; | 
|  | import "dart:async" as asy; | 
|  | import "dart:io" as io; | 
|  |  | 
|  | import "dart:ffi"; | 
|  | import "dart:io"; | 
|  |  | 
|  | class A extends core::Object implements ffi::Finalizable { | 
|  | constructor •() → self::A | 
|  | : super core::Object::•() { | 
|  | let final ffi::NativeFinalizer #t1 = [@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer] self::_nativeFinalizer in let final ffi::Pointer<ffi::Void> #t2 = [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Pointer::fromAddress<ffi::Void>() in let final core::int #t3 = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<<] [@vm.inferred-type.metadata=int (skip check)] 1.{core::int::<<}(32){(core::int) → core::int} in [@vm.direct-call.metadata=dart.ffi::_NativeFinalizer.attach] [@vm.inferred-type.metadata=!? (skip check)] #t1.{ffi::NativeFinalizer::attach}(this, #t2, this, #t3){(ffi::Finalizable, ffi::Pointer<ffi::Void>, {detach: core::Object?, externalSize: core::int?}) → void}; | 
|  | _in::reachabilityFence(this); | 
|  | } | 
|  | } | 
|  | class B extends core::Object implements ffi::Finalizable { | 
|  |  | 
|  | [@vm.inferred-type.metadata=#lib::A] | 
|  | [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] | 
|  | final field self::A a; | 
|  | constructor •([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → self::B | 
|  | : self::B::a = a, super core::Object::•() { | 
|  | ; | 
|  | _in::reachabilityFence(this); | 
|  | _in::reachabilityFence(a); | 
|  | } | 
|  | } | 
|  |  | 
|  | [@vm.inferred-type.metadata=dart.ffi::Pointer] | 
|  | static final field ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>> free = [@vm.direct-call.metadata=dart.ffi::DynamicLibrary.lookup] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] [@vm.inferred-type.metadata=dart.ffi::DynamicLibrary] ffi::DynamicLibrary::process().{ffi::DynamicLibrary::lookup}<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>("free"){(core::String) → ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>}; | 
|  |  | 
|  | [@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer] | 
|  | static final field ffi::NativeFinalizer _nativeFinalizer = new ffi::_NativeFinalizer::•([@vm.inferred-type.metadata=dart.ffi::Pointer] self::free); | 
|  |  | 
|  | [@vm.inferred-return-type.metadata=dart.async::_Future] | 
|  | [@vm.closure-id=1] | 
|  | static method main() → asy::Future<void> async /* emittedValueType= void */ { | 
|  | final self::B b = new self::B::•(new self::A::•()); | 
|  | [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] final core::List<core::int> l = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::•<core::int>(0); | 
|  | asy::Future::doWhile([@vm.closure-id=1]() → core::bool { | 
|  | [@vm.call-site-attributes.metadata=receiverType:dart.core::List<dart.core::int>] [@vm.direct-call.metadata=dart.core::_GrowableList.add] [@vm.inferred-type.metadata=!? (skip check)] l.{core::List::add}(1){(core::int) → void}; | 
|  | return true; | 
|  | }); | 
|  | await block { | 
|  | final synthesized asy::Future<io::ProcessSignal> :expressionValueWrappedFinalizable = [@vm.direct-call.metadata=dart.async::Stream.first] [@vm.direct-call.metadata=dart.io::ProcessSignal.watch] [@vm.inferred-type.metadata=dart.async::_BroadcastStream<dart.io::ProcessSignal> (skip check)] #C3.{io::ProcessSignal::watch}(){() → asy::Stream<io::ProcessSignal>}.{asy::Stream::first}{asy::Future<io::ProcessSignal>}; | 
|  | _in::reachabilityFence(b); | 
|  | } =>:expressionValueWrappedFinalizable; | 
|  | _in::reachabilityFence(b); | 
|  | } | 
|  | constants  { | 
|  | #C1 = 2 | 
|  | #C2 = "SIGINT" | 
|  | #C3 = io::ProcessSignal {signalNumber:#C1, name:#C2} | 
|  | } |