// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.6

import 'dart:async';

void vv = null;
dynamic vd = null;
Object vo = null;
Null vn = null;
int vi = 0;
Future<void> fvv = Future<void>.value(null);
Future<dynamic> fvd = Future<dynamic>.value(null);
Future<Object> fvo = Future<Object>.value(null);
Future<Null> fvn = Future<Null>.value(null);
Future<int> fvi = Future<int>.value(0);
FutureOr<void> fovv = null;
FutureOr<dynamic> fovd = null;
FutureOr<Object> fovo = null;
FutureOr<Null> fovn = null;
FutureOr<int> fovi = 0;
