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

typedef Foo<S extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(T%) → S%;
class A extends core::Object {
  field <T extends core::Object? = dynamic>(T%) → core::int f = throw "";
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  method test() → void {
    let final core::String #t1 = "hello" in this.{self::A::f}{<T extends core::Object? = dynamic>(T%) → core::int}<core::String>(#t1){(core::String) → core::int};
  }
}
static method foo<T extends core::Object? = dynamic>(self::foo::T% x) → core::int
  return 3;
static method bar() → <T extends core::Object? = dynamic>(T%) → core::int
  return #C1;
static method test1() → void {
  self::bar()<core::String>("hello"){(core::String) → core::int};
}
static method main() → dynamic {}

constants  {
  #C1 = static-tearoff self::foo
}

Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///issue_30838.dart:15:15 -> StringConstant("hello")
Extra constant evaluation: evaluated: 8, effectively constant: 1
