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

abstract class A extends core::Object {
  synthetic constructor •() → self::A*
    ;
  abstract method f(core::int* x, core::int* y) → core::int*;
  abstract method g(core::int* x, [core::int* y]) → core::int*;
  abstract method h(core::int* x, {core::int* y}) → core::int*;
}
abstract class B extends core::Object {
  synthetic constructor •() → self::B*
    ;
  abstract method f(core::int* x) → core::int*;
  abstract method g(core::int* x) → core::int*;
  abstract method h(core::int* x) → core::int*;
}
abstract class C extends core::Object implements self::A, self::B {
  synthetic constructor •() → self::C*
    ;
  abstract method f(core::int* x, core::int* y) → core::int*;
  abstract method g(core::int* x, [core::int* y]) → core::int*;
  abstract method h(core::int* x, {core::int* y}) → core::int*;
}
static method main() → dynamic
  ;
