library main;

import 'member_inheritance_from_opt_out_lib.dart';

abstract class Interface {
  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;
  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;
  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? 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;
  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;
  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() {}
