// @dart = 2.9
extension Extension1<T extends Object> on T {
  method1<S extends Object>() {}
  method2<S extends String>() {}
  method3<S extends dynamic>() {}
  method4<S>() {}
}

extension Extension2<T extends String> on T {
  method1<S extends Object>() {}
  method2<S extends String>() {}
  method3<S extends dynamic>() {}
  method4<S>() {}
}

extension Extension3<T extends dynamic> on T {
  method1<S extends Object>() {}
  method2<S extends String>() {}
  method3<S extends dynamic>() {}
  method4<S>() {}
}

extension Extension4<T> on T {
  method1<S extends Object>() {}
  method2<S extends String>() {}
  method3<S extends dynamic>() {}
  method4<S>() {}
}

main() {}
