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

import "dart:test";

static method main() → dynamic {}

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

import "dart:_internal";

class _ArraySize<T extends core::Object? = dynamic> extends core::Object implements self2::Array<self2::_ArraySize::T%> /*hasConstConstructor*/  { // from org-dartlang-testcase:///patch_lib.dart
  final field core::int foo;
  const constructor •(core::int foo) → self2::_ArraySize<self2::_ArraySize::T%>
    : self2::_ArraySize::foo = foo, super core::Object::•()
    ;
}
@#C1
@#C4
class Array<T extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
  @#C1
  static factory /* from org-dartlang-testcase:///patch_lib.dart */ •<T extends core::Object? = dynamic>(core::int foo) → self2::Array<self2::Array::•::T%>
    return new self2::_ArraySize::•<self2::Array::•::T%>(foo);
}

constants  {
  #C1 = _in::_Patch {}
  #C2 = "vm:entry-point"
  #C3 = null
  #C4 = core::pragma {name:#C2, options:#C3}
  #C5 = constructor-tearoff self2::Array::•
}


Constructor coverage from constants:
org-dartlang-testcase:///origin_lib.dart:
- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart:188:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
