library /*isNonNullableByDefault*/;
import self as self;

import "dart:test";

static method main() → dynamic {}

library /*isNonNullableByDefault*/;
import self as self2;
import "dart:_internal" as _in;
import "dart:core" as core;

import "dart:_internal";

@#C1
class Class extends core::Object {
  field core::int? _#Class#foo = null /* from org-dartlang-testcase:///patch_lib.dart */;
  constructor bar() → self2::Class
    : super core::Object::•()
    ;
  constructor baz(core::int foo) → self2::Class
    : self2::Class::_#Class#foo = foo, super core::Object::•()
    ;
  get /* from org-dartlang-testcase:///patch_lib.dart */ foo() → core::int
    return let final core::int? #t1 = this.{self2::Class::_#Class#foo} in #t1.==(null) ?{core::int} throw new _in::LateError::fieldNI("foo") : #t1{core::int};
  set /* from org-dartlang-testcase:///patch_lib.dart */ foo(core::int #t2) → void
    this.{self2::Class::_#Class#foo} = #t2;
}

constants  {
  #C1 = _in::_Patch {}
}
