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

typedef hest_t = ({@#C1 dynamic named}) →* dynamic;
class Bar extends core::Object {
  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 dynamic localWithInitializer = "hello";
    @#C1 @#C2 dynamic localGroupPart1;
    @#C1 @#C2 dynamic localGroupPart2;
    function naebdyr(@#C1 dynamic nestedFormal) → dynamic
      return null;
    dynamic roedmus = (@#C1 dynamic closureFormal) → dynamic => 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
}
