library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:6:10: Error: Type variables can't be used in static members.
//   static U foo1() {
//          ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:10:15: Error: Type variables can't be used in static members.
//   static List<U> foo1Prime() {
//               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:20: Error: Type variables can't be used in static members.
//   static void foo2(U x) {}
//                    ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:30: Error: Type variables can't be used in static members.
//   static void foo2Prime(List<U> x) {}
//                              ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:10: Error: Type variables can't be used in static members.
//   static U Function() foo8() {
//          ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:15: Error: Type variables can't be used in static members.
//   static List<U> Function() foo8Prime() {
//               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:24: Error: Type variables can't be used in static members.
//   static void Function(U) foo9() {}
//                        ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:39:29: Error: Type variables can't be used in static members.
//   static void Function(List<U>) foo9Prime() {}
//                             ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:41:21: Error: Type variables can't be used in static members.
//   static void foo10(U Function()) {}
//                     ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:43:31: Error: Type variables can't be used in static members.
//   static void foo10Prime(List<U> Function()) {}
//                               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:48:35: Error: Type variables can't be used in static members.
//   static void foo12(void Function(U) b) {}
//                                   ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:50:45: Error: Type variables can't be used in static members.
//   static void foo12Prime(void Function(List<U>) b) {}
//                                             ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:53:35: Error: Type variables can't be used in static members.
//   static void foo13(void Function(U b)) {}
//                                   ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:56:45: Error: Type variables can't be used in static members.
//   static void foo13Prime(void Function(List<U> b)) {}
//                                             ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:58:15: Error: Type variables can't be used in static members.
//   static late U foo14;
//               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:59:20: Error: Type variables can't be used in static members.
//   static late List<U> foo14Prime;
//                    ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:15: Error: Type variables can't be used in static members.
//   static late U Function(U) foo15;
//               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:26: Error: Type variables can't be used in static members.
//   static late U Function(U) foo15;
//                          ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:20: Error: Type variables can't be used in static members.
//   static late List<U> Function(List<U>) foo15Prime;
//                    ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:37: Error: Type variables can't be used in static members.
//   static late List<U> Function(List<U>) foo15Prime;
//                                     ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:19:5: Error: Type variables can't be used in static members.
//     U foo4;
//     ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
//     List<U> foo4Prime;
//          ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
//     void foo5(U y) => print(y);
//               ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:25: Error: Type variables can't be used in static members.
//     void foo5Prime(List<U> y) => print(y);
//                         ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:5: Error: Type variables can't be used in static members.
//     U foo6() => throw '';
//     ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:10: Error: Type variables can't be used in static members.
//     List<U> foo6Prime() => throw '';
//          ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:19: Error: Type variables can't be used in static members.
//     void Function(U y) foo7 = (U y) => y;
//                   ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:32: Error: Type variables can't be used in static members.
//     void Function(U y) foo7 = (U y) => y;
//                                ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:24: Error: Type variables can't be used in static members.
//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
//                        ^
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:48: Error: Type variables can't be used in static members.
//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
//                                                ^
//
import self as self;
import "dart:core" as core;

extension Foo<U extends core::Object? = dynamic> on core::List<dynamic> {
  static method foo1 = self::Foo|foo1;
  static method foo1Prime = self::Foo|foo1Prime;
  static method foo2 = self::Foo|foo2;
  static method foo2Prime = self::Foo|foo2Prime;
  static method foo3 = self::Foo|foo3;
  static method foo8 = self::Foo|foo8;
  static method foo8Prime = self::Foo|foo8Prime;
  static method foo9 = self::Foo|foo9;
  static method foo9Prime = self::Foo|foo9Prime;
  static method foo10 = self::Foo|foo10;
  static method foo10Prime = self::Foo|foo10Prime;
  static method foo11 = self::Foo|foo11;
  static method foo12 = self::Foo|foo12;
  static method foo12Prime = self::Foo|foo12Prime;
  static method foo13 = self::Foo|foo13;
  static method foo13Prime = self::Foo|foo13Prime;
  static field foo14 = self::Foo|foo14;
  static field foo14Prime = self::Foo|foo14Prime;
  static field foo15 = self::Foo|foo15;
  static field foo15Prime = self::Foo|foo15Prime;
}
late static field invalid-type Foo|foo14;
late static field core::List<invalid-type> Foo|foo14Prime;
late static field (invalid-type) → invalid-type Foo|foo15;
late static field (core::List<invalid-type>) → core::List<invalid-type> Foo|foo15Prime;
static method Foo|foo1() → invalid-type {
  throw "";
}
static method Foo|foo1Prime() → core::List<invalid-type> {
  throw "";
}
static method Foo|foo2(invalid-type x) → void {}
static method Foo|foo2Prime(core::List<invalid-type> x) → void {}
static method Foo|foo3() → void {
  invalid-type foo4;
  core::List<invalid-type> foo4Prime;
  function foo5(invalid-type y) → void
    return core::print(y);
  function foo5Prime(core::List<invalid-type> y) → void
    return core::print(y);
  function foo6() → invalid-type
    return throw "";
  function foo6Prime() → core::List<invalid-type>
    return throw "";
  (invalid-type) → void foo7 = (invalid-type y) → void => y;
  (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
}
static method Foo|foo8() → () → invalid-type {
  throw "";
}
static method Foo|foo8Prime() → () → core::List<invalid-type> {
  throw "";
}
static method Foo|foo9() → (invalid-type) → void {}
static method Foo|foo9Prime() → (core::List<invalid-type>) → void {}
static method Foo|foo10(() → invalid-type Function) → void {}
static method Foo|foo10Prime(() → core::List<invalid-type> Function) → void {}
static method Foo|foo11((dynamic) → void Function) → void {}
static method Foo|foo12((invalid-type) → void b) → void {}
static method Foo|foo12Prime((core::List<invalid-type>) → void b) → void {}
static method Foo|foo13((invalid-type) → void Function) → void {}
static method Foo|foo13Prime((core::List<invalid-type>) → void Function) → void {}
static method main() → dynamic {}
