class Foo<T> {
  final Callback<T> callbackField;
  final T finalField;
  ---- unknown chunk starts ----
late
---- unknown chunk ends ----
  T mutableField;
  ---- unknown chunk starts ----
late
---- unknown chunk ends ----
  Callback<T> mutableCallbackField;
  Foo(this.finalField, this.callbackField);
  set setter(T x) {}
  void method(T x) {}
  void withCallback(Callback<T> callback) {}
}
main() {}
typedef void Callback<T>(T x);
