library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:6:37: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   int get a => runtimeType.hashCode xor null.hashCode;
//                                     ^^^
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:11:41: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
//                                         ^^^
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:16:28: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   int i(int x, int y) => x xor y;
//                            ^^^
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:23:32: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   int o(int x, int y) => 1 + x xor y + 3;
//                                ^^^
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:31: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   Key(int x, int y) : foo = x xor y, bar = x xor y {
//                               ^^^
//
// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:46: Error: Binary operator 'xor' is written as '^' instead of the written out word.
// Try replacing 'xor' with '^'.
//   Key(int x, int y) : foo = x xor y, bar = x xor y {
//                                              ^^^
//
import self as self;
import "dart:core" as core;

abstract class Key extends core::Object {
  field core::int foo;
  field core::int bar;
  constructor •(core::int x, core::int y) → self::Key
    ;
  constructor NotDuplicate(core::int x, core::int y) → self::Key
    ;
  get a() → core::int
    ;
  get b() → core::int
    ;
  get c() → core::int
    ;
  get d() → core::int
    ;
  get e() → core::int
    ;
  get f() → core::int
    ;
  get g() → core::int
    ;
  get h() → core::int
    ;
  method i(core::int x, core::int y) → core::int
    ;
  method j(core::int x, core::int y) → core::int
    ;
  method k(core::int x, core::int y) → core::int
    ;
  method l(core::int x, core::int y) → core::int
    ;
  method m(core::int x, core::int y) → core::int
    ;
  method n(core::int x, core::int y) → core::int
    ;
  method o(core::int x, core::int y) → core::int
    ;
  method p(core::int x, core::int y) → core::int
    ;
  method q(core::int x, core::int y) → core::int
    ;
  method r(core::int x, core::int y) → core::int
    ;
  method s(core::int x, core::int y) → dynamic
    ;
}
static method main() → dynamic
  ;
