library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/bug32629.dart:16:19: Error: The argument type 'dynamic Function(dynamic, dynamic)' can't be assigned to the parameter type 'String Function(String, dynamic)'.
//   foo<String>(new A());
//                   ^
//
import self as self;
import "dart:core" as core;

typedef Reducer<invariant S extends core::Object* = dynamic> = (S*, dynamic) →* S*;
class A extends core::Object {
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
  method call(dynamic a, dynamic b) → dynamic {
    return a;
  }
}
static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
static method test() → void {
  self::foo<core::String*>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/bug32629.dart:16:19: Error: The argument type 'dynamic Function(dynamic, dynamic)' can't be assigned to the parameter type 'String Function(String, dynamic)'.
  foo<String>(new A());
                  ^" in (let final self::A* #t2 = new self::A::•() in #t2.==(null) ?{(dynamic, dynamic) →* dynamic} null : #t2.{self::A::call}) as{TypeError} (core::String*, dynamic) →* core::String*);
}
static method main() → dynamic {}
