// @dart = 2.5
import 'member_inheritance_from_opt_in_lib.dart';

class LegacyClass extends Class implements Interface {
  int field3;
  int field4;
  int get getter3 => 0;
  int get getter4 => 0;
  int get property3 => 0;
  int get property4 => 0;
  int method10a(int a, {int b}) => 0;
  int method10b({int a, int b}) => 0;
  int method3() => 0;
  int method4() => 0;
  int method6a(int a, int b) => 0;
  int method6b(int a, [int b]) => 0;
  int method6c([int a, int b]) => 0;
  int method8a(int a, {int b: 0}) => 0;
  int method8b({int a, int b: 0}) => 0;
  int property7;
  int property8;
  void set property3(int value) {}
  void set property4(int value) {}
  void set setter3(int value) {}
  void set setter4(int value) {}
}

main() {}
