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

class Superclass extends core::Object {
  synthetic constructor •() → void
    ;
  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 •() → void
    ;
  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
  ;
