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;
//                                     ^
//
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
  ;
static method Foo|foo1Prime() → core::List<invalid-type>
  ;
static method Foo|foo2(invalid-type x) → void
  ;
static method Foo|foo2Prime(core::List<invalid-type> x) → void
  ;
static method Foo|foo3() → void
  ;
static method Foo|foo8() → () → invalid-type
  ;
static method Foo|foo8Prime() → () → core::List<invalid-type>
  ;
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
  ;
