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

import "org-dartlang-testcase:///main_lib.dart";

class Class extends core::Object implements mai::Interface {
  field core::int? field1 = null;
  field core::int? field3 = null;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  set /*isLegacy*/ field2(core::int? value) → void;
}
static method method(mai::Interface i) → void {
  i.{mai::Interface::field2} = i.{mai::Interface::field1};
  i.{mai::Interface::field3} = i.{mai::Interface::field3};
}
static method main() → dynamic {
  self::method(new self::Class::•());
}

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

abstract class Interface extends core::Object {
  abstract get /*isLegacy*/ field1() → core::int?;
  abstract set /*isLegacy*/ field2(core::int? value) → void;
  abstract get /*isLegacy*/ field3() → core::int?;
  abstract set /*isLegacy*/ field3(core::int? value) → void;
}
