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

class Foo extends core::Object {
  field dynamic _field = null;
  default constructor •() → void
    : super core::Object::•()
    ;
}
class FooValue extends core::Object {
  default constructor •() → void
    : super core::Object::•()
    ;
}
class Bar extends core::Object {
  field dynamic _field = null;
  default constructor •() → void
    : super core::Object::•()
    ;
}
class BarValue extends core::Object {
  default constructor •() → void
    : super core::Object::•()
    ;
}
static method main() → dynamic {
  self::Foo foo = new self::Foo::•();
  foo.{self::Foo::_field} = new self::FooValue::•();
  dynamic fooValue = foo.{self::Foo::_field};
  core::print(fooValue);
  self::Bar bar = new self::Bar::•();
  bar.{self::Bar::_field} = new self::BarValue::•();
  dynamic barValue = bar.{self::Bar::_field};
  core::print(barValue);
}
