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

static method main() → dynamic {
  core::print(#C1 is{ForNonNullableByDefault} () → dynamic);
  core::print((<T extends core::Object? = dynamic>(T% x) → T% => x).{core::Object::runtimeType}{core::Type});
  core::print((<T extends core::num>(T x) → T => x).{core::Object::runtimeType}{core::Type});
  core::print((<T extends core::Comparable<T> = core::Comparable<dynamic>>(T x) → T => x).{core::Object::runtimeType}{core::Type});
  core::print((<T extends core::Comparable<S%> = core::Comparable<dynamic>, S extends core::Object? = dynamic>(T x) → T => x).{core::Object::runtimeType}{core::Type});
  core::print((<T extends (T) → dynamic = (Null) → dynamic>(T x) → T => x).{core::Object::runtimeType}{core::Type});
  core::print((<T extends core::List<core::List<T>> = core::List<core::List<dynamic>>>(T x) → T => x).{core::Object::runtimeType}{core::Type});
}

constants  {
  #C1 = static-tearoff self::main
}
