library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.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_class.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_class.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_class.dart:15: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_class.dart:27: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_class.dart:31: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_class.dart:35: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_class.dart:36: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_class.dart:37: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_class.dart:39: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_class.dart:44: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_class.dart:46: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_class.dart:49: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_class.dart:52: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_class.dart:54: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_class.dart:55: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_class.dart:56: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_class.dart:56: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_class.dart:57: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_class.dart:57: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;

class Foo<U extends core::Object? = dynamic> extends core::Object {
  late static field invalid-type foo14;
  late static field core::List<invalid-type> foo14Prime;
  late static field (invalid-type) → invalid-type foo15;
  late static field (core::List<invalid-type>) → core::List<invalid-type> foo15Prime;
  synthetic constructor •() → self::Foo<self::Foo::U%>
    ;
  static method foo1() → invalid-type
    ;
  static method foo1Prime() → core::List<invalid-type>
    ;
  static method foo2(invalid-type x) → void
    ;
  static method foo2Prime(core::List<invalid-type> x) → void
    ;
  static method foo3() → void
    ;
  static method foo8() → () → invalid-type
    ;
  static method foo8Prime() → () → core::List<invalid-type>
    ;
  static method foo9() → (invalid-type) → void
    ;
  static method foo9Prime() → (core::List<invalid-type>) → void
    ;
  static method foo10(() → invalid-type Function) → void
    ;
  static method foo10Prime(() → core::List<invalid-type> Function) → void
    ;
  static method foo11((dynamic) → void Function) → void
    ;
  static method foo12((invalid-type) → void b) → void
    ;
  static method foo12Prime((core::List<invalid-type>) → void b) → void
    ;
  static method foo13((invalid-type) → void Function) → void
    ;
  static method foo13Prime((core::List<invalid-type>) → void Function) → void
    ;
}
static method main() → dynamic
  ;
