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

import "dart:test";

static method main() → dynamic
  ;

library /*isNonNullableByDefault*/;
import self as self2;
import "dart:_js_helper" as _js;
import "dart:core" as core;

import "dart:_js_helper";

@_js::patch
class Class extends core::Object {
  final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */;
  const constructor _internal({core::bool defaultValue = false}) → self2::Class
    : self2::Class::defaultValue = defaultValue, super core::Object::•()
    ;
  @_js::patch
  external static factory fact({core::bool defaultValue}) → self2::Class;
  @_js::patch
  external static factory constFact({core::bool defaultValue = true}) → self2::Class;
}


Extra constant evaluation status:
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:6:50 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:28 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{})
Extra constant evaluation: evaluated: 4, effectively constant: 3
