abstract class I {
  String get member1;
  String get procedure;
  void set setter(String value);
  void set fieldSetter(String value);
  void set setterVsGetter(num value);
  double get getterVsSetter;
}

class A implements I {
  static String member5 = "member5";
  static String member4 = "member4";
  static String member3 = "member3";
  static String member1 = "member1";
  static String member2 = "member2";
  static void procedure() {}
  static void set setter(String value) {}
  static String fieldSetter = "fieldSetter";
  static num get setterVsGetter => 0;
  static void set getterVsSetter(double value) {}
  dynamic noSuchMethod(Invocation i) => "foo";
}

main() {}
