library main;

import 'member_inheritance_from_opt_out_lib.dart';

abstract class Interface {
  int field1 = 0;
  int get field3;
  int get getter1;
  int get property1;
  int method1();
  int method3a(int a, int b);
  int method3b(int a, [int b]);
  int method3c([int a, int b]);
  int method5a(int a, {int b: 0});
  int method5b({int a: 0, int b: 0});
  int method5c({required int a, required int b});
  int property3 = 0;
  int? field2;
  int? get field4;
  int? get getter2;
  int? get property2;
  int? method2();
  int? method4a(int? a, int? b);
  int? method4b(int? a, [int? b]);
  int? method4c([int? a, int? b]);
  int? method6a(int? a, {int? b});
  int? method6b({int? a, int? b});
  int? method6c({required int? a, required int? b});
  int? property4;
  void set field3(int value);
  void set field4(int? value);
  void set property1(int value);
  void set property2(int? value);
  void set setter1(int value);
  void set setter2(int? value);
}

class Class1 extends LegacyClass {}

class Class2a extends LegacyClass implements Interface {}

class Class2b extends LegacyClass implements Interface {
  int field1 = 0;
  int get field3 => 0;
  int get getter1 => 0;
  int get property1 => 0;
  int method1() => 0;
  int method3a(int a, int b) => 0;
  int method3b(int a, [int b = 42]) => 0;
  int method3c([int a = 42, int b = 42]) => 0;
  int method5a(int a, {int b: 0}) => 0;
  int method5b({int a: 0, int b: 0}) => 0;
  int method5c({required int a, required int b}) => 0;
  int property3 = 0;
  int? field2;
  int? get field4 => 0;
  int? get getter2 => 0;
  int? get property2 => 0;
  int? method2() => 0;
  int? method4a(int? a, int? b) => 0;
  int? method4b(int? a, [int? b]) => 0;
  int? method4c([int? a, int? b]) => 0;
  int? method6a(int? a, {int? b}) => 0;
  int? method6b({int? a, int? b}) => 0;
  int? method6c({required int? a, required int? b}) => 0;
  int? property4;
  void set field3(int value) {}
  void set field4(int? value) {}
  void set property1(int value) {}
  void set property2(int? value) {}
  void set setter1(int value) {}
  void set setter2(int? value) {}
}

class Class3a extends GenericLegacyClass<int> {}

class Class3b extends GenericLegacyClass<int?> {}

class Class3c<S> extends GenericLegacyClass<S> {}

main() {}
