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

typedef F<@self::A::•() contravariant T extends core::Object? = dynamic> = (T%) → void;
class A extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::A
    : super core::Object::•()
    ;
}
class Class<@self::A::•() T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Class<self::Class::T%>
    ;
  method method<@self::A::•() T extends core::Object? = dynamic>() → void
    ;
}
extension Extension<@self::A::•() T extends core::Object? = dynamic> on T% {
  method method = self::Extension|method;
  tearoff method = self::Extension|get#method;
}
static method method<@self::A::•() T extends core::Object? = dynamic>() → void
  ;
static method Extension|method<#T extends core::Object? = dynamic, @self::A::•() T extends core::Object? = dynamic>(lowered final self::Extension|method::#T% #this) → void
  ;
static method Extension|get#method<#T extends core::Object? = dynamic>(lowered final self::Extension|get#method::#T% #this) → <T extends core::Object? = dynamic>() → void
  return <T extends core::Object? = dynamic>() → void => self::Extension|method<self::Extension|get#method::#T%, T%>(#this);
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:11:12 -> InstanceConstant(const A{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:13:14 -> InstanceConstant(const A{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:14:16 -> InstanceConstant(const A{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:19:22 -> InstanceConstant(const A{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:9:14 -> InstanceConstant(const A{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_annotations.dart:20:16 -> InstanceConstant(const A{})
Extra constant evaluation: evaluated: 9, effectively constant: 6
