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";

@_in::patch
class Class extends core::Object /*hasConstConstructor*/  {
  final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */;
  @_in::patch
  external constructor generative({core::bool defaultValue = true}) → self2::Class
    ;
  @_in::patch
  const constructor constGenerative({core::bool defaultValue = true}) → self2::Class
    : self2::Class::defaultValue = defaultValue, super core::Object::•()
    ;
}
@_in::patch
class Class2 extends core::Object {
  final field core::int injectedField /* from org-dartlang-testcase:///patch_lib.dart */;
  field core::int field;
  external constructor •(core::int field) → self2::Class2
    ;
}


Extra constant evaluation status:
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:49 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:7:44 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:16:9 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{})
Extra constant evaluation: evaluated: 5, effectively constant: 4
