library;
//
// Problems in library:
//
// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Warning: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
//   lib.MyClass get lib => null; // (1)
//   ^^^^^^^^^^^
//
// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Warning: 'foo' isn't a type.
//   foo foo() {}
//   ^^^
// pkg/front_end/testcases/regress/issue_34498.dart:10:7: Context: This isn't a type.
//   foo foo() {}
//       ^^^
//
// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Warning: Type 'Missing' not found.
//   Missing bar() {}
//   ^^^^^^^
//
// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Warning: Can't use type arguments with type variable 'T'.
// Try removing the type arguments.
//   T<String> foo() {}
//   ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  get lib() → invalid-type
    return null;
  method foo() → invalid-type {}
  method bar() → invalid-type {}
}
class B extends self::A {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
}
class C<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T>
    : super core::Object::•()
    ;
  method foo() → invalid-type {}
}
static final field self::A a = null;
static method main() → dynamic {}
