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

class Foo extends core::Object {
  field core::int? field = null;
  synthetic constructor •() → self::Foo
    : super core::Object::•()
    ;
  method bar(core::int? x) → core::int? {}
}
static method main() → dynamic {
  self::Foo foo = new self::Foo::•();
  foo.{self::Foo::field} = 5;
  foo.{self::Foo::bar}(6);
  self::test_nullable_function_type_formal_param(f: () → core::int => 2);
}
static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int*} 1.{core::int::unary-}() : #t1{core::int};
}

constants  {
  #C1 = null
}
