library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Superclass extends core::Object {
  synthetic constructor •() → self::Superclass
    ;
  method foo({dynamic alpha = null, dynamic beta = null}) → dynamic
    ;
  method bar({dynamic beta = null, dynamic alpha = null}) → 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 = null, dynamic alpha = null}) → dynamic
    ;
  method bar({dynamic alpha = null, dynamic beta = null}) → 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
  ;
