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

class Foo extends core::Object {
  field dynamic field = null;
  synthetic constructor •() → self::Foo
    : super core::Object::•()
    ;
}
static method identity(dynamic x) → dynamic
  return x;
static method use(dynamic x) → void {}
static method main(core::List<core::String> args) → dynamic {
  dynamic foo = self::identity(new self::Foo::•());
  if(args.length.>(1)) {
    foo.field = "string";
    dynamic first = foo.field;
    self::use(first);
    foo.noField = "string";
    dynamic second = foo.noField;
    self::use(second);
  }
}
