class Foo<T> {
  Foo(this.finalField, this.callbackField);
  final Callback<T> callbackField;
  final T finalField;
  late Callback<T> mutableCallbackField;
  late T mutableField;
  set setter(T x) {}
  void method(T x) {}
  void withCallback(Callback<T> callback) {}
}

main() {}
typedef void Callback<T>(T x);
