library;
import self as self;
import "dart:core" as core;

import "org-dartlang-testcase:///scope_access.dart";
import "org-dartlang-testcase:///scope_access.dart";
import "org-dartlang-testcase:///scope_access.dart";

class Class extends core::Object {
  constructor injectedConstructor1() → self::Class
    ;
  constructor injectedConstructor2() → self::Class
    ;
  constructor _injectedConstructor3() → self::Class
    ;
  constructor constructor() → self::Class
    ;
  static method staticMethod() → void
    ;
  static set staticSetter(dynamic value) → void
    ;
  static method /* from org-dartlang-testcase:///scope_access_lib1.dart */ staticInjectedMethod1() → void
    ;
  static set /* from org-dartlang-testcase:///scope_access_lib1.dart */ staticInjectedSetter1(dynamic value) → void
    ;
  static method /* from org-dartlang-testcase:///scope_access_lib2.dart */ staticInjectedMethod2() → void
    ;
  static set /* from org-dartlang-testcase:///scope_access_lib2.dart */ staticInjectedSetter2(dynamic value) → void
    ;
  static method /* from org-dartlang-testcase:///scope_access_lib3.dart */ _staticInjectedMethod3() → void
    ;
  static set /* from org-dartlang-testcase:///scope_access_lib3.dart */ _staticInjectedSetter3(dynamic value) → void
    ;
}
static method topLevelMethod() → void
  ;
static set topLevelSetter(dynamic value) → void
  ;
static method /* from org-dartlang-testcase:///scope_access_lib1.dart */ topLevelInjectedMethod1() → void
  ;
static set /* from org-dartlang-testcase:///scope_access_lib1.dart */ topLevelInjectedSetter1(dynamic value) → void
  ;
static method /* from org-dartlang-testcase:///scope_access_lib2.dart */ topLevelInjectedMethod2() → void
  ;
static set /* from org-dartlang-testcase:///scope_access_lib2.dart */ topLevelInjectedSetter2(dynamic value) → void
  ;
static method /* from org-dartlang-testcase:///scope_access_lib3.dart */ _topLevelInjectedMethod3() → void
  ;
static set /* from org-dartlang-testcase:///scope_access_lib3.dart */ _topLevelInjectedSetter3(dynamic value) → void
  ;
