class Class1 {
  Class1(this.field);
  String toString() => 'Class1($field)';
  int field;
}

class Class2 {
  Class2(this.field);
  String toString() => 'Class2($field)';
  int field;
}

expect(expected, actual) {}

extension on Class1 {
  int get property {}
  int method() {}
  num genericMethod<T extends num>(T t) {}
  set property(int value) {}
}

extension on Class2 {
  int get property {}
  int method() {}
  num genericMethod<T extends num>(T t) {}
  set property(int value) {}
}

main() {}
testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {}
testExtension2(Class2 c0, Class2 c1, Class2? c0n) {}
