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 {
  dynamic foo = new self::Foo::•();
  foo._field = new self::FooValue::•();
  dynamic fooValue = foo._field;
  core::print(fooValue);
  dynamic bar = new self::Bar::•();
  bar._field = new self::BarValue::•();
  dynamic barValue = bar._field;
  core::print(barValue);
}
