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

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

constants  {
  #C1 = 42
  #C2 = self::Bar {}
  #C3 = null
}
