library #lib;
import self as self;
import "./hello.dart" as hel;

[@vm.bytecode=
Bytecode {
  Entry                1
  CheckStack           0
  PushNull
  PushConstant         CP#1
  IndirectStaticCall   1, CP#0
  PopLocal             r0
  PushConstant         CP#3
  IndirectStaticCall   0, CP#2
  ReturnTOS
}
ConstantPool {
  [0] = ArgDesc num-args 1, num-type-args 0, names []
  [1] = StaticICData target 'dart:async::Future::value (constructor)', arg-desc CP#0
  [2] = ArgDesc num-args 0, num-type-args 0, names []
  [3] = StaticICData target '#pkg/vm/testcases/bytecode/hello.dart::main', arg-desc CP#2
}
]static method callDeferred() → dynamic
  return let final dynamic #t1 = CheckLibraryIsLoaded(lib) in hel::main();
[@vm.bytecode=
Bytecode {
  Entry                0
  CheckStack           0
  PushNull
  PushConstant         CP#1
  IndirectStaticCall   1, CP#0
  ReturnTOS
}
ConstantPool {
  [0] = ArgDesc num-args 1, num-type-args 0, names []
  [1] = StaticICData target 'dart:async::Future::value (constructor)', arg-desc CP#0
}
]static method testLoadLibrary() → dynamic
  return LoadLibrary(lib);
[@vm.bytecode=
Bytecode {
  Entry                0
  CheckStack           0
  PushNull
  ReturnTOS
}
ConstantPool {
}
]static method main() → dynamic {}
