library;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
import "dart:_js_helper" as _js;

import "dart:_js_helper";

class Class extends core::Object {
  field dynamic instanceField;
  static field dynamic staticField = null;
  constructor generative() → self::Class
    : self::Class::instanceField = null, super core::Object::•()
    ;
  external constructor externalGenerative() → self::Class;
  @#C2
  external constructor nativeGenerative() → self::Class;
  static method _#generative#tearOff() → self::Class
    return new self::Class::generative();
  static factory fact() → self::Class
    return (null as dynamic) as{TypeError,ForDynamic} self::Class;
  static method _#fact#tearOff() → self::Class
    return self::Class::fact();
  static method _#externalGenerative#tearOff() → self::Class
    return new self::Class::externalGenerative();
  external static factory externalFact() → self::Class;
  static method _#externalFact#tearOff() → self::Class
    return self::Class::externalFact();
  static method _#nativeGenerative#tearOff() → self::Class
    return new self::Class::nativeGenerative();
  @#C2
  external static factory nativeFact() → self::Class;
  static method _#nativeFact#tearOff() → self::Class
    return self::Class::nativeFact();
  get instanceGetter() → dynamic
    return null;
  set instanceSetter(wildcard dynamic _#wc3#formal) → void {}
  method instanceMethod() → dynamic {}
  static get staticGetter() → dynamic
    return null;
  static set staticSetter(wildcard dynamic _#wc4#formal) → void {}
  static method staticMethod() → dynamic {}
  external get externalInstanceGetter() → dynamic;
  external set externalInstanceSetter(wildcard dynamic _#wc5#formal) → void;
  external method externalInstanceMethod() → dynamic;
  external static get externalStaticGetter() → dynamic;
  external static set externalStaticSetter(wildcard dynamic _#wc6#formal) → void;
  external static method externalStaticMethod() → dynamic;
  @#C2
  external get nativeInstanceGetter() → dynamic;
  @#C2
  external set nativeInstanceSetter(wildcard dynamic _#wc7#formal) → void;
  @#C2
  external method nativeInstanceMethod() → dynamic;
  @#C2
  external static get nativeStaticGetter() → dynamic;
  @#C2
  external static set nativeStaticSetter(wildcard dynamic _#wc8#formal) → void;
  @#C2
  external static method nativeStaticMethod() → dynamic;
}
@#C4
class NativeClass extends core::Object {
  field dynamic instanceField;
  static field dynamic staticField = null;
  field dynamic instanceNamedField;
  constructor generative() → self::NativeClass
    : self::NativeClass::instanceNamedField = null, self::NativeClass::instanceField = null, super core::Object::•()
    ;
  external constructor externalGenerative() → self::NativeClass;
  @#C2
  external constructor nativeGenerative() → self::NativeClass;
  static method _#generative#tearOff() → self::NativeClass
    return new self::NativeClass::generative();
  static factory fact() → self::NativeClass
    return (null as dynamic) as{TypeError,ForDynamic} self::NativeClass;
  static method _#fact#tearOff() → self::NativeClass
    return self::NativeClass::fact();
  static method _#externalGenerative#tearOff() → self::NativeClass
    return new self::NativeClass::externalGenerative();
  external static factory externalFact() → self::NativeClass;
  static method _#externalFact#tearOff() → self::NativeClass
    return self::NativeClass::externalFact();
  static method _#nativeGenerative#tearOff() → self::NativeClass
    return new self::NativeClass::nativeGenerative();
  @#C2
  external static factory nativeFact() → self::NativeClass;
  static method _#nativeFact#tearOff() → self::NativeClass
    return self::NativeClass::nativeFact();
  get instanceGetter() → dynamic
    return null;
  set instanceSetter(wildcard dynamic _#wc9#formal) → void {}
  method instanceMethod() → dynamic {}
  static get staticGetter() → dynamic
    return null;
  static set staticSetter(wildcard dynamic _#wc10#formal) → void {}
  static method staticMethod() → dynamic {}
  external get externalInstanceGetter() → dynamic;
  external set externalInstanceSetter(wildcard dynamic _#wc11#formal) → void;
  external method externalInstanceMethod() → dynamic;
  external static get externalStaticGetter() → dynamic;
  external static set externalStaticSetter(wildcard dynamic _#wc12#formal) → void;
  external static method externalStaticMethod() → dynamic;
  @#C2
  external get nativeInstanceGetter() → dynamic;
  @#C2
  external set nativeInstanceSetter(wildcard dynamic _#wc13#formal) → void;
  @#C2
  external method nativeInstanceMethod() → dynamic;
  @#C2
  external static get nativeStaticGetter() → dynamic;
  @#C2
  external static set nativeStaticSetter(wildcard dynamic _#wc14#formal) → void;
  @#C2
  external static method nativeStaticMethod() → dynamic;
}
static field dynamic topLevelField;
static get topLevelGetter() → dynamic
  return null;
static set topLevelSetter(wildcard dynamic _#wc0#formal) → void {}
static method topLevelFunction() → dynamic {}
external static get externalTopLevelGetter() → dynamic;
external static set externalTopLevelSetter(wildcard dynamic _#wc1#formal) → void;
external static method externalTopLevelFunction() → dynamic;
@#C2
external static get nativeTopLevelGetter() → dynamic;
@#C2
external static set nativeTopLevelSetter(wildcard dynamic _#wc2#formal) → void;
@#C2
external static method nativeTopLevelFunction() → dynamic;
static method main() → dynamic {
  if(true)
    return;
  self::topLevelField;
  self::topLevelGetter;
  self::topLevelSetter = null;
  self::topLevelFunction();
  self::externalTopLevelGetter;
  self::externalTopLevelSetter = null;
  self::externalTopLevelFunction();
  self::nativeTopLevelGetter;
  self::nativeTopLevelSetter = null;
  self::nativeTopLevelFunction();
  self::Class c1 = new self::Class::generative();
  self::Class::fact();
  new self::Class::externalGenerative();
  self::Class::externalFact();
  new self::Class::nativeGenerative();
  self::Class::nativeFact();
  c1.{self::Class::instanceField}{dynamic};
  c1.{self::Class::instanceGetter}{dynamic};
  c1.{self::Class::instanceSetter} = null;
  c1.{self::Class::instanceMethod}(){() → dynamic};
  self::Class::staticField;
  self::Class::staticGetter;
  self::Class::staticSetter = null;
  self::Class::staticMethod();
  c1.{self::Class::externalInstanceGetter}{dynamic};
  c1.{self::Class::externalInstanceSetter} = null;
  c1.{self::Class::externalInstanceMethod}(){() → dynamic};
  self::Class::externalStaticGetter;
  self::Class::externalStaticSetter = null;
  self::Class::externalStaticMethod();
  c1.{self::Class::nativeInstanceGetter}{dynamic};
  c1.{self::Class::nativeInstanceSetter} = null;
  c1.{self::Class::nativeInstanceMethod}(){() → dynamic};
  self::Class::nativeStaticGetter;
  self::Class::nativeStaticSetter = null;
  self::Class::nativeStaticMethod();
  self::NativeClass c2 = new self::NativeClass::generative();
  self::NativeClass::fact();
  new self::NativeClass::externalGenerative();
  self::NativeClass::externalFact();
  new self::NativeClass::nativeGenerative();
  self::NativeClass::nativeFact();
  c2.{self::NativeClass::instanceField}{dynamic};
  c2.{self::NativeClass::instanceGetter}{dynamic};
  c2.{self::NativeClass::instanceSetter} = null;
  c2.{self::NativeClass::instanceMethod}(){() → dynamic};
  self::NativeClass::staticField;
  self::NativeClass::staticGetter;
  self::NativeClass::staticSetter = null;
  self::NativeClass::staticMethod();
  c2.{self::NativeClass::externalInstanceGetter}{dynamic};
  c2.{self::NativeClass::externalInstanceSetter} = null;
  c2.{self::NativeClass::externalInstanceMethod}(){() → dynamic};
  self::NativeClass::externalStaticGetter;
  self::NativeClass::externalStaticSetter = null;
  self::NativeClass::externalStaticMethod();
  c2.{self::NativeClass::nativeInstanceGetter}{dynamic};
  c2.{self::NativeClass::nativeInstanceSetter} = null;
  c2.{self::NativeClass::nativeInstanceMethod}(){() → dynamic};
  self::NativeClass::nativeStaticGetter;
  self::NativeClass::nativeStaticSetter = null;
  self::NativeClass::nativeStaticMethod();
}

constants  {
  #C1 = ""
  #C2 = _in::ExternalName {name:#C1}
  #C3 = "d"
  #C4 = _js::Native {name:#C3}
}


Constructor coverage from constants:
org-dartlang-testcase:///native.dart:
- ExternalName. (from org-dartlang-sdk:///lib/internal/internal.dart)
- Object. (from org-dartlang-sdk:///lib/core/object.dart)
- Native. (from org-dartlang-sdk:///lib/_internal/js_runtime/lib/annotations.dart)
