// Unhandled errors:
//
// pkg/front_end/testcases/duplicated_bad_prefix.dart:10:7: Error: 'Dupe' is already declared in this scope.
// class Dupe {}
//       ^^^^
//
// pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Error: Type 'Dupe.a' not found.
//   Dupe.a b;
//   ^^^^^^
//
// pkg/front_end/testcases/duplicated_bad_prefix.dart:6:45: Error: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
// import 'duplicated_bad_prefix_lib2.dart' as dupe;
//                                             ^
//
// pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Error: 'Dupe.a' isn't a type.
//   Dupe.a b;
//   ^^^^^^

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

class Dupe#1 extends core::Object {
  synthetic constructor •() → self::Dupe#1
    : super core::Object::•()
    ;
}
class Dupe extends core::Object {
  synthetic constructor •() → self::Dupe
    : super core::Object::•()
    ;
}
class C extends core::Object {
  field invalid-type b = null;
  field invalid-type d = null;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
}
static method main() → dynamic {}
