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::•()
    ;
}
class FooValue extends core::Object {
  synthetic constructor •() → self::FooValue
    : super core::Object::•()
    ;
}
class Bar extends core::Object {
  field dynamic _field = null;
  synthetic constructor •() → self::Bar
    : super core::Object::•()
    ;
}
class BarValue extends core::Object {
  synthetic constructor •() → self::BarValue
    : 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);
}
