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

class Superclass extends core::Object {
  synthetic constructor •() → self::Superclass*
    ;
  method foo({dynamic alpha, dynamic beta}) → dynamic
    ;
  method bar({dynamic beta, dynamic alpha}) → dynamic
    ;
  method namedCallback(({alpha: core::String*, beta: core::int*}) →* dynamic callback) → dynamic
    ;
}
class Subclass extends self::Superclass {
  synthetic constructor •() → self::Subclass*
    ;
  method foo({dynamic beta, dynamic alpha}) → dynamic
    ;
  method bar({dynamic alpha, dynamic beta}) → dynamic
    ;
  method namedCallback(({alpha: core::String*, beta: core::int*}) →* dynamic callback) → dynamic
    ;
}
static method topLevelNamed(dynamic beta, dynamic alpha, {dynamic gamma, dynamic delta}) → dynamic
  ;
static method topLevelOptional(dynamic beta, dynamic alpha, [dynamic gamma, dynamic delta]) → dynamic
  ;
static method main() → dynamic
  ;
