// @dart = 2.9
class Base {
  set push(int x);
  set float(covariant int x);
  noSuchMethod(i) => print("${runtimeType}: ${i.positionalArguments[0]}");
}

class Me extends Base {}

class You extends Base {
  set push(num x);
  set float(num x);
}

main() {}
