abstract class I13 {
  int get hashCode;
}

abstract class I14 {
  Never get hashCode;
}

enum E1 {
  element;

  int get hashCode => 42;
}

enum E10 {
  element;

  static int get hashCode => 42;
}

enum E11 {
  element;

  static void set hashCode(int value) {}
}

enum E12 { hashCode }

enum E13 implements I13 { element }

enum E14 implements I14 { element }

enum E2 {
  element;

  String get hashCode => "foo";
}

enum E3 {
  element;

  final int hashCode = 42;
}

enum E4 {
  element;

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

enum E5 {
  element;

  Never get hashCode => throw 42;
}

enum E6 {
  element;

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

enum E7 {
  element;

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

enum E8 {
  element;

  void set hashCode(String value) {}
}

enum E9 {
  element;

  double get hashCode;
}

main() {}
