// @dart = 2.9
bool enableRead = true;
callField(Class c) {}
callGetter(Class c) {}

class Class {
  Function field1a = method1;
  Function get getter1a => method1;
  int Function() field1b = method1;
  int Function() get getter1b => method1;
  int Function([int a, int b]) field5 = method5;
  int Function([int a, int b]) get getter5 => method5;
  int Function(int a) field2 = method2;
  int Function(int a) get getter2 => method2;
  int Function(int a, [int b]) field4 = method4;
  int Function(int a, [int b]) get getter4 => method4;
  int Function(int a, int b) field3 = method3;
  int Function(int a, int b) get getter3 => method3;
  int Function(int a, {int b}) field6 = method6;
  int Function(int a, {int b}) get getter6 => method6;
  int Function({int a, int b}) field7 = method7;
  int Function({int a, int b}) get getter7 => method7;
}

class Subclass extends Class {
  Function get field1a {}
  Function get getter1a {}
  int Function() get field1b {}
  int Function() get getter1b {}
  int Function([int a, int b]) get field5 {}
  int Function([int a, int b]) get getter5 {}
  int Function(int a) get field2 {}
  int Function(int a) get getter2 {}
  int Function(int a, [int b]) get field4 {}
  int Function(int a, [int b]) get getter4 {}
  int Function(int a, int b) get field3 {}
  int Function(int a, int b) get getter3 {}
  int Function(int a, {int b}) get field6 {}
  int Function(int a, {int b}) get getter6 {}
  int Function({int a, int b}) get field7 {}
  int Function({int a, int b}) get getter7 {}
}

expect(expected, actual) {}
int method1() => 0;
int method2(int a) => -a;
int method3(int a, int b) => a - b;
int method4(int a, [int b = 0]) => a - b;
int method5([int a = 0, int b = 0]) => a - b;
int method6(int a, {int b = 0}) => a - b;
int method7({int a = 0, int b = 0}) => a - b;
int read(int value) => enableRead ? value : -1;
main() {}
