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

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

class AugmentedClass extends core::Object {
  synthetic constructor •() → self::AugmentedClass
    : super core::Object::•()
    ;
  method /* from org-dartlang-testcase:///duplicate_augment_lib.dart */ augmentedInstanceMethod() → void {
    core::print("augmentedInstanceMethod#2");
  }
  static method /* from org-dartlang-testcase:///duplicate_augment_lib.dart */ augmentedStaticMethod() → void {
    core::print("augmentedStaticMethod#2");
  }
}
static method /* from org-dartlang-testcase:///duplicate_augment_lib.dart */ augmentedTopLevelMethod() → void {
  core::print("augmentedTopLevelMethod#2");
}
