library;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field dynamic/Null field = null;
  constructor •() → void
    : super core::Object::•()
    ;
}
class B extends core::Object {
  field dynamic/core::int* {null,int} field = null;
  constructor •() → void
    : super core::Object::•()
    ;
}
class C extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  operator ==(dynamic/Nothing x) → dynamic/core::bool* {other}
    return false;
}
class X extends core::Object implements self::A, self::B {
  field dynamic/core::int* {null,int} field = null;
  constructor •() → void
    : super core::Object::•()
    ;
}
static method useAsA(self::A/self::A* {other} object) → void/Null {
  dynamic/core::int* {null,int} _ = object.field;
}
static method useAsB(self::B/self::B* {other} object) → void/Null {
  dynamic/core::int* {null,int} _ = object.field;
  self::escape(object);
}
static method escape(dynamic/core::Object+ {int,string,other} x) → void/Null {
  x.==(null) ? x = "" : null;
  x.==(null) ? x = 45 : null;
  if(!(x is core::int) && !(x is core::String)) {
    x.field = 45;
  }
}
static method main() → dynamic/Null {
  dynamic/self::X! {other} object = new self::X::•();
  self::useAsA(new self::A::•());
  self::useAsA(object);
  self::useAsB(new self::B::•());
  self::useAsB(object);
}
