// Errors:
//
// pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart:19:74: Error: This expression has type 'void' and can't be used.
// var /*@topType=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
//                                                                          ^

library test;
import self as self;
import "dart:core" as core;

static field void y = self::run<void>(self::printRunning);
static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
  core::print("running");
  self::run::T t = f.call();
  core::print("done running");
  return t;
}
static method printRunning() → void {
  core::print("running");
}
static method main() → dynamic {}
