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

typedef hest_t = ({named: dynamic}) → dynamic;
class Bar extends core::Object {
  const constructor •() → void
    : super core::Object::•()
    ;
  const constructor named(dynamic x) → void
    : super core::Object::•()
    ;
}
class Baz extends core::Object {
  constructor •(@self::foo dynamic constructorFormal) → void
    : super core::Object::•()
    ;
  static factory bazFactory(@self::foo dynamic factoryFormal) → self::Baz
    return null;
  method fisk(@self::foo dynamic formal1, @self::Bar::•() dynamic formal2, @self::Bar::named(self::foo) dynamic formal3, @self::foo @self::Bar::named(self::foo) dynamic formal4, [@self::foo dynamic optional = null]) → dynamic {
    @self::foo dynamic local1;
    @self::Bar::•() dynamic local2;
    @self::Bar::named(self::foo) dynamic local3;
    @self::foo @self::Bar::named(self::foo) dynamic local4;
    @self::foo core::String localWithInitializer = "hello";
    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart1;
    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart2;
    function naebdyr(@self::foo dynamic nestedFormal) → core::Null
      return null;
    (dynamic) → core::Null roedmus = (@self::foo dynamic closureFormal) → core::Null => null;
  }
  method hest({@self::foo dynamic named = null}) → dynamic
    return null;
}
static const field core::int foo = 42;
static method main() → dynamic {}
