library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart:10:23: Error: Redirection constructor target not found: 'Class.nonexisting'
//   factory Class.a() = Class.nonexisting;
//                       ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart:11:23: Error: Redirection constructor target not found: 'Class.constructor'
//   factory Class.b() = Class.constructor;
//                       ^
//
import self as self;
import "dart:core" as core;

class Class extends core::Object {
  static field () → self::Class field;
  static final field dynamic _redirecting# = <dynamic>[self::Class::a, self::Class::b]/*isLegacy*/;
  constructor _() → self::Class
    ;
  static method _#_#tearOff() → self::Class
    return new self::Class::_();
  static method constructor() → self::Class
    ;
  static factory a() → self::Class
    let dynamic #redirecting_factory = "Class.nonexisting" in invalid-expression;
  static method _#a#tearOff() → self::Class;
  static factory b() → self::Class
    let dynamic #redirecting_factory = "Class.constructor" in invalid-expression;
  static method _#b#tearOff() → self::Class;
}
static method main() → dynamic
  ;
