library /*isNonNullableByDefault*/;
import self as self;
import "dart:test" as test;

import "dart:test";

static method main() → dynamic {
  new test::Class::generative();
  #C2;
}

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

import "dart:_internal";

@#C3
class Class extends core::Object /*hasConstConstructor*/  {
  final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */;
  @#C3
  constructor generative({core::bool defaultValue = #C1}) → test::Class
    : test::Class::defaultValue = defaultValue, super core::Object::•()
    ;
  @#C3
  const constructor constGenerative({core::bool defaultValue = #C1}) → test::Class
    : test::Class::defaultValue = defaultValue, super core::Object::•()
    ;
}

constants  {
  #C1 = true
  #C2 = test::Class {defaultValue:#C1}
  #C3 = _in::_Patch {}
}


Constructor coverage from constants:
org-dartlang-testcase:///main.dart:
- Class.constGenerative (from org-dartlang-testcase:///patch_lib.dart:16:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
