abstract class I13 {
  int get index;
}

abstract class I14 {
  Never get index;
}

enum E1 {
  element;

  int get index => 42;
}

enum E10 {
  element;

  static int get index => 42;
}

enum E11 {
  element;

  static void set index(int value) {}
}

enum E12 { index }

enum E13 implements I13 { element }

enum E14 implements I14 { element }

enum E2 {
  element;

  String get index => "foo";
}

enum E3 {
  element;

  final int index = 42;
}

enum E4 {
  element;

  List<String> index() => [];
}

enum E5 {
  element;

  Never get index => throw 42;
}

enum E6 {
  element;

  final int foo = 0, index = 1, bar = 2;
}

enum E7 {
  element;

  void set index(int value) {}
  int get index;
}

enum E8 {
  element;

  void set index(String value) {}
}

enum E9 {
  element;

  double get index;
}

main() {}
