library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Foo extends core::Object /*hasConstConstructor*/  {
  const constructor •(core::List<core::String> l) → self::Foo
    : super core::Object::•()
    ;
}
static method test() → void {
  function f<@#C1 T extends core::Object? = dynamic>() → void {}
  <T extends core::Object? = dynamic>() → Null x = <@#C1 T extends core::Object? = dynamic>() → Null {};
}
static method main() → dynamic {}

constants  {
  #C1 = self::Foo {}
}


Constructor coverage from constants:
org-dartlang-testcase:///downwards_inference_annotations_type_variable_local.dart:
- Foo. (from org-dartlang-testcase:///downwards_inference_annotations_type_variable_local.dart:9:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
