Future<bool> getFutureBool() async {}
Future<bool> test1() async => await getNull();
Future<bool> test2() => getNull();
Future<bool> test4() async => await getFutureNull();
Future<bool> test5() => getFutureNull();
Future<bool> test6() => getFutureBool();
Future<bool> test7() async => getFutureBool();
Future<dynamic> getFutureNull() async {}
bool test3() => getNull();
dynamic getNull() => null;
main() {}
test() async {}
