library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Class extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::Class::redirect1a, self::Class::redirect2a, self::Class::redirect3a, self::Class::redirect4a, self::Class::redirect5a, self::Class::redirect6a, self::Class::redirect1b, self::Class::redirect2b, self::Class::redirect3b, self::Class::redirect4b, self::Class::redirect5b, self::Class::redirect6b]/*isLegacy*/;
  constructor positional([core::int a = 0, core::int b = 42]) → self::Class
    ;
  constructor named({core::int a = 0, core::int b = 42}) → self::Class
    ;
  static factory redirect1a() → self::Class
    return new self::Class::positional();
  static factory redirect2a(core::int a) → self::Class
    return new self::Class::positional(a);
  static factory redirect3a([core::int a]) → self::Class
    return new self::Class::positional(a);
  static factory redirect4a(core::int a, [core::int b]) → self::Class
    return new self::Class::positional(a, b);
  static factory redirect5a([core::int a, core::int b]) → self::Class
    return new self::Class::positional(a, b);
  static factory redirect6a([core::int a, has-declared-initializer core::int b]) → self::Class
    return new self::Class::positional(a, b);
  static factory redirect1b() → self::Class
    return new self::Class::named();
  static factory redirect2b({core::int a}) → self::Class
    return new self::Class::named(a: a);
  static factory redirect3b({core::int b}) → self::Class
    return new self::Class::named(b: b);
  static factory redirect4b({core::int a, core::int b}) → self::Class
    return new self::Class::named(a: a, b: b);
  static factory redirect5b({core::int b, core::int a}) → self::Class
    return new self::Class::named(b: b, a: a);
  static factory redirect6b({has-declared-initializer core::int a, core::int b}) → self::Class
    return new self::Class::named(a: a, b: b);
}
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect1a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect2a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect3a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect4a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect5a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect6a)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect1b)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect2b)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect3b)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect4b)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect5b)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_default_values.dart:5:7 -> ConstructorTearOffConstant(Class.redirect6b)
Extra constant evaluation: evaluated: 41, effectively constant: 12
