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

import "#pkg/vm/testcases/bytecode/hello.dart" deferred as lib;

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