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

class Class extends core::Object {
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  @#C3
  method instanceMethod() → dynamic {}
  @#C3
  static method staticMethod() → dynamic {}
}
extension Extension on self::Class {
  method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
  tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
  static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
  return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
@#C3
static method topLevelMethod() → dynamic {}
static method main() → dynamic {}

constants  {
  #C1 = "dart2js:noInline"
  #C2 = null
  #C3 = core::pragma {name:#C1, options:#C2}
}


Constructor coverage from constants:
org-dartlang-testcase:///annotations.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)
