Pedantic 1.9 (#475)

diff --git a/analysis_options.yaml b/analysis_options.yaml
index 80e87de..df479b1 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,4 +1,4 @@
-include: package:pedantic/analysis_options.1.8.0.yaml
+include: package:pedantic/analysis_options.1.9.0.yaml
 
 analyzer:
   strong-mode:
@@ -8,3 +8,9 @@
     - 'third_party/**'
     - 'doc/generated/**'
     - 'flutter/**'
+
+linter:
+  rules:
+    - prefer_final_fields
+    - prefer_final_in_for_each
+    - prefer_final_locals
diff --git a/benchmark/bench.dart b/benchmark/bench.dart
index 88b9f23..77692e8 100644
--- a/benchmark/bench.dart
+++ b/benchmark/bench.dart
@@ -16,15 +16,14 @@
 import 'package:dart_services/src/flutter_web.dart';
 
 void main(List<String> args) async {
-  final bool json = args.contains('--json');
+  final json = args.contains('--json');
 
-  final BenchmarkHarness harness = BenchmarkHarness(asJson: json);
+  final harness = BenchmarkHarness(asJson: json);
 
-  final FlutterWebManager flutterWebManager =
-      FlutterWebManager(SdkManager.flutterSdk);
+  final flutterWebManager = FlutterWebManager(SdkManager.flutterSdk);
   await flutterWebManager.initFlutterWeb();
 
-  var compiler =
+  final compiler =
       Compiler(SdkManager.sdk, SdkManager.flutterSdk, flutterWebManager);
 
   Logger.root.level = Level.WARNING;
@@ -33,7 +32,7 @@
     if (record.stackTrace != null) print(record.stackTrace);
   });
 
-  final List<Benchmark> benchmarks = [
+  final benchmarks = <Benchmark>[
     AnalyzerBenchmark('hello', sampleCode, flutterWebManager),
     AnalyzerBenchmark('hellohtml', sampleCodeWeb, flutterWebManager),
     AnalyzerBenchmark('sunflower', _sunflower, flutterWebManager),
diff --git a/example/apitest.dart b/example/apitest.dart
index dffb620..6584b9d 100644
--- a/example/apitest.dart
+++ b/example/apitest.dart
@@ -42,10 +42,10 @@
 }
 
 void setupIdRetrieval() {
-  Element output = querySelector('#idSection .output');
-  ButtonElement button = querySelector('#idSection button') as ButtonElement;
+  final output = querySelector('#idSection .output');
+  final button = querySelector('#idSection button') as ButtonElement;
   button.onClick.listen((e) {
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     _dartpadSupportApi.getUnusedMappingId().then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -53,17 +53,16 @@
 }
 
 void setupGistStore() {
-  CodeMirror editor = createEditor(querySelector('#storeSection .editor'),
+  final editor = createEditor(querySelector('#storeSection .editor'),
       defaultText: 'Internal ID');
-  Element output = querySelector('#storeSection .output');
-  ButtonElement button = querySelector('#storeSection button') as ButtonElement;
+  final output = querySelector('#storeSection .output');
+  final button = querySelector('#storeSection button') as ButtonElement;
   button.onClick.listen((e) {
-    String editorText = editor.getDoc().getValue();
-    support.GistToInternalIdMapping saveObject =
-        support.GistToInternalIdMapping();
+    final editorText = editor.getDoc().getValue();
+    final saveObject = support.GistToInternalIdMapping();
     saveObject.internalId = editorText;
     saveObject.gistId = '72d83fe97bfc8e735607'; //Solar
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     _dartpadSupportApi.storeGist(saveObject).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -71,13 +70,13 @@
 }
 
 void setupGistRetrieval() {
-  CodeMirror editor = createEditor(querySelector('#gistSection .editor'),
+  final editor = createEditor(querySelector('#gistSection .editor'),
       defaultText: 'Internal ID');
-  Element output = querySelector('#gistSection .output');
-  ButtonElement button = querySelector('#gistSection button') as ButtonElement;
+  final output = querySelector('#gistSection .output');
+  final button = querySelector('#gistSection button') as ButtonElement;
   button.onClick.listen((e) {
-    String editorText = editor.getDoc().getValue();
-    Stopwatch sw = Stopwatch()..start();
+    final editorText = editor.getDoc().getValue();
+    final sw = Stopwatch()..start();
     _dartpadSupportApi.retrieveGist(id: editorText).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -85,15 +84,14 @@
 }
 
 void setupAnalyze() {
-  CodeMirror editor = createEditor(querySelector('#analyzeSection .editor'));
-  Element output = querySelector('#analyzeSection .output');
-  ButtonElement button =
-      querySelector('#analyzeSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#analyzeSection .editor'));
+  final output = querySelector('#analyzeSection .output');
+  final button = querySelector('#analyzeSection button') as ButtonElement;
   button.onClick.listen((e) {
     _setupClients();
-    services.SourceRequest srcRequest = services.SourceRequest()
+    final srcRequest = services.SourceRequest()
       ..source = editor.getDoc().getValue();
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     servicesApi.analyze(srcRequest).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -101,18 +99,17 @@
 }
 
 void setupCompile() {
-  CodeMirror editor = createEditor(querySelector('#compileSection .editor'));
-  Element output = querySelector('#compileSection .output');
-  ButtonElement button =
-      querySelector('#compileSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#compileSection .editor'));
+  final output = querySelector('#compileSection .output');
+  final button = querySelector('#compileSection button') as ButtonElement;
   button.onClick.listen((e) {
-    String source = editor.getDoc().getValue();
+    final source = editor.getDoc().getValue();
 
     _setupClients();
-    services.CompileRequest compileRequest = services.CompileRequest();
+    final compileRequest = services.CompileRequest();
     compileRequest.source = source;
 
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     servicesApi.compile(compileRequest).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -120,14 +117,13 @@
 }
 
 void setupComplete() {
-  CodeMirror editor = createEditor(querySelector('#completeSection .editor'));
-  Element output = querySelector('#completeSection .output');
-  Element offsetElement = querySelector('#completeSection .offset');
-  ButtonElement button =
-      querySelector('#completeSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#completeSection .editor'));
+  final output = querySelector('#completeSection .output');
+  final offsetElement = querySelector('#completeSection .offset');
+  final button = querySelector('#completeSection button') as ButtonElement;
   button.onClick.listen((e) {
-    var sourceRequest = _getSourceRequest(editor);
-    Stopwatch sw = Stopwatch()..start();
+    final sourceRequest = _getSourceRequest(editor);
+    final sw = Stopwatch()..start();
     servicesApi.complete(sourceRequest).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -139,14 +135,13 @@
 }
 
 void setupDocument() {
-  CodeMirror editor = createEditor(querySelector('#documentSection .editor'));
-  Element output = querySelector('#documentSection .output');
-  Element offsetElement = querySelector('#documentSection .offset');
-  ButtonElement button =
-      querySelector('#documentSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#documentSection .editor'));
+  final output = querySelector('#documentSection .output');
+  final offsetElement = querySelector('#documentSection .offset');
+  final button = querySelector('#documentSection button') as ButtonElement;
   button.onClick.listen((e) {
-    var sourceRequest = _getSourceRequest(editor);
-    Stopwatch sw = Stopwatch()..start();
+    final sourceRequest = _getSourceRequest(editor);
+    final sw = Stopwatch()..start();
     servicesApi.document(sourceRequest).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -158,13 +153,13 @@
 }
 
 void setupFixes() {
-  CodeMirror editor = createEditor(querySelector('#fixesSection .editor'));
-  Element output = querySelector('#fixesSection .output');
-  Element offsetElement = querySelector('#fixesSection .offset');
-  ButtonElement button = querySelector('#fixesSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#fixesSection .editor'));
+  final output = querySelector('#fixesSection .output');
+  final offsetElement = querySelector('#fixesSection .offset');
+  final button = querySelector('#fixesSection button') as ButtonElement;
   button.onClick.listen((e) {
-    var sourceRequest = _getSourceRequest(editor);
-    Stopwatch sw = Stopwatch()..start();
+    final sourceRequest = _getSourceRequest(editor);
+    final sw = Stopwatch()..start();
     servicesApi.fixes(sourceRequest).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -177,11 +172,10 @@
 }
 
 void setupVersion() {
-  Element output = querySelector('#versionSection .output');
-  ButtonElement button =
-      querySelector('#versionSection button') as ButtonElement;
+  final output = querySelector('#versionSection .output');
+  final button = querySelector('#versionSection button') as ButtonElement;
   button.onClick.listen((e) {
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     servicesApi.version().then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -189,14 +183,13 @@
 }
 
 void setupExport() {
-  CodeMirror editor = createEditor(querySelector('#exportSection .editor'));
-  Element output = querySelector('#exportSection .output');
-  ButtonElement button =
-      querySelector('#exportSection button') as ButtonElement;
+  final editor = createEditor(querySelector('#exportSection .editor'));
+  final output = querySelector('#exportSection .output');
+  final button = querySelector('#exportSection button') as ButtonElement;
   button.onClick.listen((e) {
-    support.PadSaveObject saveObject = support.PadSaveObject();
+    final saveObject = support.PadSaveObject();
     saveObject.dart = editor.getDoc().getValue();
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     _dartpadSupportApi.export(saveObject).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
     });
@@ -204,17 +197,14 @@
 }
 
 void setupRetrieve() {
-  Element output = querySelector('#retrieveSection .output');
-  CodeMirror editor =
+  final output = querySelector('#retrieveSection .output');
+  final editor =
       createEditor(querySelector('#retrieveSection .editor'), defaultText: '');
-  ButtonElement button =
-      querySelector('#retrieveSection button') as ButtonElement;
+  final button = querySelector('#retrieveSection button') as ButtonElement;
   button.onClick.listen((e) {
-    String uuid = editor.getDoc().getValue();
-
-    Stopwatch sw = Stopwatch()..start();
-
-    support.UuidContainer uuidContainer = support.UuidContainer()..uuid = uuid;
+    final uuid = editor.getDoc().getValue();
+    final sw = Stopwatch()..start();
+    final uuidContainer = support.UuidContainer()..uuid = uuid;
 
     _dartpadSupportApi.pullExportContent(uuidContainer).then((results) {
       output.text = '${_formatTiming(sw)}${results.toJson()}';
@@ -223,17 +213,17 @@
 }
 
 CodeMirror createEditor(Element element, {String defaultText}) {
-  final Map options = {
+  final options = {
     'tabSize': 2,
     'indentUnit': 2,
     'autoCloseBrackets': true,
     'matchBrackets': true,
     'theme': 'zenburn',
     'mode': 'dart',
-    'value': defaultText == null ? _text : defaultText
+    'value': _text ?? defaultText
   };
 
-  CodeMirror editor = CodeMirror.fromElement(element, options: options);
+  final editor = CodeMirror.fromElement(element, options: options);
   editor.refresh();
   return editor;
 }
@@ -244,12 +234,12 @@
     (querySelector('input[type=text]') as InputElement).value;
 
 int _getOffset(CodeMirror editor) {
-  Position pos = editor.getDoc().getCursor();
+  final pos = editor.getDoc().getCursor();
   return editor.getDoc().indexFromPos(pos);
 }
 
 services.SourceRequest _getSourceRequest(CodeMirror editor) {
-  var srcRequest = services.SourceRequest()
+  final srcRequest = services.SourceRequest()
     ..source = editor.getDoc().getValue()
     ..offset = _getOffset(editor);
   return srcRequest;
diff --git a/example/index.dart b/example/index.dart
index ce526ea..2e39625 100644
--- a/example/index.dart
+++ b/example/index.dart
@@ -7,12 +7,11 @@
 
 void main() {
   querySelector('#sendButton').onClick.listen((MouseEvent e) {
-    String code = querySelector('#code').text;
-    Map<String, String> jsonData = <String, String>{'source': code};
-    //var foo = querySelector('#apiEndPoint');
-    String api = (querySelector('#apiEndPoint') as InputElement).value;
+    final code = querySelector('#code').text;
+    final jsonData = <String, String>{'source': code};
+    final api = (querySelector('#apiEndPoint') as InputElement).value;
 
-    Stopwatch sw = Stopwatch()..start();
+    final sw = Stopwatch()..start();
     HttpRequest.request(api, method: 'POST', sendData: json.encode(jsonData))
         .then((HttpRequest request) {
       sw.stop();
diff --git a/example/services_utils.dart b/example/services_utils.dart
index 77fbde9..d693aa2 100644
--- a/example/services_utils.dart
+++ b/example/services_utils.dart
@@ -41,7 +41,7 @@
   /// Strips all disallowed headers for an HTTP request before sending it.
   @override
   Future<StreamedResponse> send(BaseRequest request) {
-    for (String headerKey in disallowedHeaders) {
+    for (final headerKey in disallowedHeaders) {
       request.headers.remove(headerKey);
     }
 
diff --git a/lib/services_dev.dart b/lib/services_dev.dart
index 842ee24..8f7df7f 100644
--- a/lib/services_dev.dart
+++ b/lib/services_dev.dart
@@ -25,21 +25,21 @@
 Logger _logger = Logger('services');
 
 void main(List<String> args) {
-  ArgParser parser = ArgParser();
+  final parser = ArgParser();
   parser.addOption('port', abbr: 'p', defaultsTo: '8080');
   parser.addFlag('discovery');
   parser.addFlag('relay');
   parser.addOption('server-url', defaultsTo: 'http://localhost');
 
-  ArgResults result = parser.parse(args);
-  int port = int.tryParse(result['port'] as String);
+  final result = parser.parse(args);
+  final port = int.tryParse(result['port'] as String);
   if (port == null) {
     stdout.writeln(
         'Could not parse port value "${result['port']}" into a number.');
     exit(1);
   }
 
-  String sdk = sdkPath;
+  final sdk = sdkPath;
 
   void printExit(String doc) {
     print(doc);
@@ -47,11 +47,12 @@
   }
 
   if (result['discovery'] as bool) {
-    String serverUrl = result['server-url'] as String;
+    final serverUrl = result['server-url'] as String;
     if (result['relay'] as bool) {
       EndpointsServer.generateRelayDiscovery(sdk, serverUrl).then(printExit);
     } else {
-      EndpointsServer.generateDiscovery(SdkManager.flutterSdk, serverUrl).then(printExit);
+      EndpointsServer.generateDiscovery(SdkManager.flutterSdk, serverUrl)
+          .then(printExit);
     }
     return;
   }
@@ -69,7 +70,7 @@
 
 class EndpointsServer {
   static Future<EndpointsServer> serve(String sdkPath, int port) {
-    EndpointsServer endpointsServer = EndpointsServer._(sdkPath, port);
+    final endpointsServer = EndpointsServer._(sdkPath, port);
 
     return shelf
         .serve(endpointsServer.handler, InternetAddress.anyIPv4, port)
@@ -81,33 +82,33 @@
 
   static Future<String> generateDiscovery(
       FlutterSdk flutterSdk, String serverUrl) async {
-    FlutterWebManager flutterWebManager = FlutterWebManager(flutterSdk);
-    CommonServer commonServer =
+    final flutterWebManager = FlutterWebManager(flutterSdk);
+    final commonServer =
         CommonServer(sdkPath, flutterWebManager, _ServerContainer(), _Cache());
     await commonServer.init();
-    ApiServer apiServer = ApiServer(apiPrefix: '/api', prettyPrint: true)
+    final apiServer = ApiServer(apiPrefix: '/api', prettyPrint: true)
       ..addApi(commonServer);
     apiServer.enableDiscoveryApi();
 
-    Uri uri = Uri.parse('/api/discovery/v1/apis/dartservices/v1/rest');
-    HttpApiRequest request = HttpApiRequest('GET', uri, <String, dynamic>{},
+    final uri = Uri.parse('/api/discovery/v1/apis/dartservices/v1/rest');
+    final request = HttpApiRequest('GET', uri, <String, dynamic>{},
         Stream<List<int>>.fromIterable(<List<int>>[]));
-    HttpApiResponse response = await apiServer.handleHttpApiRequest(request);
+    final response = await apiServer.handleHttpApiRequest(request);
     return utf8.decode(await response.body.first);
   }
 
   static Future<String> generateRelayDiscovery(
       String sdkPath, String serverUrl) async {
-    FileRelayServer databaseServer = FileRelayServer();
-    ApiServer apiServer = ApiServer(apiPrefix: '/api', prettyPrint: true)
+    final databaseServer = FileRelayServer();
+    final apiServer = ApiServer(apiPrefix: '/api', prettyPrint: true)
       ..addApi(databaseServer);
     apiServer.enableDiscoveryApi();
 
-    Uri uri =
+    final uri =
         Uri.parse('/api/discovery/v1/apis/_dartpadsupportservices/v1/rest');
-    HttpApiRequest request = HttpApiRequest('GET', uri, <String, dynamic>{},
+    final request = HttpApiRequest('GET', uri, <String, dynamic>{},
         Stream<List<int>>.fromIterable(<List<int>>[]));
-    HttpApiResponse response = await apiServer.handleHttpApiRequest(request);
+    final response = await apiServer.handleHttpApiRequest(request);
     return utf8.decode(await response.body.first);
   }
 
@@ -149,7 +150,7 @@
     // NOTE: We could read in the request body here and parse it similar to the
     // _parseRequest method to determine content-type and dispatch to e.g. a
     // plain text handler if we want to support that.
-    HttpApiRequest apiRequest = HttpApiRequest(
+    final apiRequest = HttpApiRequest(
         request.method, request.requestedUri, request.headers, request.read());
 
     // Promote text/plain requests to application/json.
diff --git a/lib/services_gae.dart b/lib/services_gae.dart
index 887a1d4..d065726 100644
--- a/lib/services_gae.dart
+++ b/lib/services_gae.dart
@@ -24,10 +24,10 @@
 final Logger _logger = Logger('gae_server');
 
 void main(List<String> args) {
-  int gaePort = 8080;
+  var gaePort = 8080;
   if (args.isNotEmpty) gaePort = int.parse(args[0]);
 
-  String sdk = sdkPath;
+  final sdk = sdkPath;
 
   if (sdk == null) {
     throw 'No Dart SDK is available; set the DART_SDK env var.';
@@ -36,7 +36,7 @@
   // Log to stdout/stderr.  AppEngine's logging package is disabled in 0.6.0
   // and AppEngine copies stdout/stderr to the dashboards.
   _logger.onRecord.listen((LogRecord rec) {
-    String out = ('${rec.level.name}: ${rec.time}: ${rec.message}\n');
+    final out = ('${rec.level.name}: ${rec.time}: ${rec.message}\n');
     if (rec.level > Level.INFO) {
       io.stderr.write(out);
     } else {
@@ -50,8 +50,7 @@
     GAE_VERSION: ${io.Platform.environment['GAE_VERSION']}
   ''');
 
-  GaeServer server =
-      GaeServer(sdk, io.Platform.environment['REDIS_SERVER_URI']);
+  final server = GaeServer(sdk, io.Platform.environment['REDIS_SERVER_URI']);
   server.start(gaePort);
 }
 
@@ -111,7 +110,7 @@
   }
 
   Future<void> _processOptionsRequest(io.HttpRequest request) async {
-    String requestedMethod =
+    final requestedMethod =
         request.headers.value('access-control-request-method');
     int statusCode;
     if (requestedMethod != null && requestedMethod.toUpperCase() == 'POST') {
@@ -158,13 +157,13 @@
     // NOTE: We could read in the request body here and parse it similar to
     // the _parseRequest method to determine content-type and dispatch to e.g.
     // a plain text handler if we want to support that.
-    rpc.HttpApiRequest apiRequest = rpc.HttpApiRequest.fromHttpRequest(request);
+    final apiRequest = rpc.HttpApiRequest.fromHttpRequest(request);
 
     // Dartpad sends data as plain text, we need to promote this to
     // application/json to ensure that the rpc library processes it correctly
     try {
       apiRequest.headers['content-type'] = 'application/json; charset=utf-8';
-      var apiResponse = await apiServer.handleHttpApiRequest(apiRequest);
+      final apiResponse = await apiServer.handleHttpApiRequest(apiRequest);
       await rpc.sendApiResponse(apiResponse, request.response);
     } catch (e) {
       // This should only happen in the case where there is a bug in the rpc
diff --git a/lib/src/analysis_server.dart b/lib/src/analysis_server.dart
index 416c449..996e117 100644
--- a/lib/src/analysis_server.dart
+++ b/lib/src/analysis_server.dart
@@ -61,12 +61,13 @@
         if (dumpServerMessages) _logger.info('--> $str');
       }
 
-      List<String> serverArgs = <String>[
+      final serverArgs = <String>[
         '--dartpad',
         '--client-id=DartPad',
         '--client-version=$_sdkVersion'
       ];
-      _logger.info('About to start with server with SDK path `$sdkPath` and args: $serverArgs');
+      _logger.info(
+          'About to start with server with SDK path `$sdkPath` and args: $serverArgs');
 
       _init = AnalysisServer.create(
         onRead: onRead,
@@ -86,7 +87,7 @@
         listenForAnalysisComplete();
         listenForErrors();
 
-        Completer<dynamic> analysisComplete = getAnalysisCompleteCompleter();
+        final analysisComplete = getAnalysisCompleteCompleter();
         await analysisServer.analysis
             .setAnalysisRoots(<String>[_sourceDirPath], <String>[]);
         await _sendAddOverlays(<String, String>{mainPath: _WARMUP_SRC});
@@ -117,15 +118,15 @@
   }
 
   Future<api.CompleteResponse> complete(String src, int offset) async {
-    Map<String, String> sources = <String, String>{kMainDart: src};
-    api.Location location = api.Location.from(kMainDart, offset);
+    final sources = <String, String>{kMainDart: src};
+    final location = api.Location.from(kMainDart, offset);
 
-    CompletionResults results =
+    final results =
         await _completeImpl(sources, location.sourceName, location.offset);
-    List<CompletionSuggestion> suggestions = results.results;
+    var suggestions = results.results;
 
-    var source = sources[location.sourceName];
-    var prefix = source.substring(results.replacementOffset, location.offset);
+    final source = sources[location.sourceName];
+    final prefix = source.substring(results.replacementOffset, location.offset);
     suggestions = suggestions
         .where(
             (s) => s.completion.toLowerCase().startsWith(prefix.toLowerCase()))
@@ -159,29 +160,28 @@
 
   Future<api.FixesResponse> getFixesMulti(
       Map<String, String> sources, api.Location location) async {
-    FixesResult results =
+    final results =
         await _getFixesImpl(sources, location.sourceName, location.offset);
-    List<api.ProblemAndFixes> responseFixes =
-        results.fixes.map(_convertAnalysisErrorFix).toList();
+    final responseFixes = results.fixes.map(_convertAnalysisErrorFix).toList();
     return api.FixesResponse(responseFixes);
   }
 
   Future<api.AssistsResponse> getAssists(String src, int offset) async {
-    var sources = {kMainDart: src};
-    var sourceName = api.Location.from(kMainDart, offset).sourceName;
-    var results = await _getAssistsImpl(sources, sourceName, offset);
-    var fixes = _convertSourceChangesToCandidateFixes(results.assists);
+    final sources = {kMainDart: src};
+    final sourceName = api.Location.from(kMainDart, offset).sourceName;
+    final results = await _getAssistsImpl(sources, sourceName, offset);
+    final fixes = _convertSourceChangesToCandidateFixes(results.assists);
     return api.AssistsResponse(fixes);
   }
 
   Future<api.FormatResponse> format(String src, int offset) {
     return _formatImpl(src, offset).then((FormatResult editResult) {
-      List<SourceEdit> edits = editResult.edits;
+      final edits = editResult.edits;
 
       edits.sort((SourceEdit e1, SourceEdit e2) =>
           -1 * e1.offset.compareTo(e2.offset));
 
-      for (SourceEdit edit in edits) {
+      for (final edit in edits) {
         src = src.replaceRange(
             edit.offset, edit.offset + edit.length, edit.replacement);
       }
@@ -197,20 +197,19 @@
     _logger.fine('dartdoc: Scheduler queue: ${serverScheduler.queueCount}');
 
     return serverScheduler.schedule(ClosureTask<Map<String, String>>(() async {
-      Completer<dynamic> analysisCompleter = getAnalysisCompleteCompleter();
+      final analysisCompleter = getAnalysisCompleteCompleter();
       await _loadSources(<String, String>{mainPath: source});
       await analysisCompleter.future;
 
-      HoverResult result =
-          await analysisServer.analysis.getHover(mainPath, offset);
+      final result = await analysisServer.analysis.getHover(mainPath, offset);
       await _unloadSources();
 
       if (result.hovers.isEmpty) {
         return null;
       }
 
-      HoverInformation info = result.hovers.first;
-      Map<String, String> m = <String, String>{};
+      final info = result.hovers.first;
+      final m = <String, String>{};
 
       m['description'] = info.elementDescription;
       m['kind'] = info.elementKind;
@@ -225,7 +224,7 @@
       m['staticType'] = info.staticType;
       m['propagatedType'] = info.propagatedType;
 
-      for (String key in m.keys.toList()) {
+      for (final key in m.keys.toList()) {
         if (m[key] == null) m.remove(key);
       }
 
@@ -234,7 +233,7 @@
   }
 
   Future<api.AnalysisResults> analyze(String source) {
-    Map<String, String> sources = <String, String>{kMainDart: source};
+    var sources = <String, String>{kMainDart: source};
 
     _logger
         .fine('analyzeMulti: Scheduler queue: ${serverScheduler.queueCount}');
@@ -242,13 +241,13 @@
     return serverScheduler.schedule(ClosureTask<api.AnalysisResults>(() async {
       clearErrors();
 
-      Completer<dynamic> analysisCompleter = getAnalysisCompleteCompleter();
+      final analysisCompleter = getAnalysisCompleteCompleter();
       sources = _getOverlayMapWithPaths(sources);
       await _loadSources(sources);
       await analysisCompleter.future;
 
       // Calculate the issues.
-      List<api.AnalysisIssue> issues = getErrors().map((AnalysisError error) {
+      final issues = getErrors().map((AnalysisError error) {
         return api.AnalysisIssue.fromIssue(
           error.severity.toLowerCase(),
           error.location.startLine,
@@ -263,8 +262,8 @@
       issues.sort();
 
       // Calculate the imports.
-      Set<String> packageImports = <String>{};
-      for (String source in sources.values) {
+      final packageImports = <String>{};
+      for (final source in sources.values) {
         packageImports
             .addAll(filterSafePackagesFromImports(getAllImportsFor(source)));
       }
@@ -279,7 +278,7 @@
   Future<AssistsResult> _getAssistsImpl(
       Map<String, String> sources, String sourceName, int offset) {
     sources = _getOverlayMapWithPaths(sources);
-    String path = _getPathFromName(sourceName);
+    final path = _getPathFromName(sourceName);
 
     if (serverScheduler.queueCount > 0) {
       _logger.fine(
@@ -287,11 +286,11 @@
     }
 
     return serverScheduler.schedule(ClosureTask<AssistsResult>(() async {
-      Completer<dynamic> analysisCompleter = getAnalysisCompleteCompleter();
+      final analysisCompleter = getAnalysisCompleteCompleter();
       await _loadSources(sources);
       await analysisCompleter.future;
-      var length = 1;
-      var assists = await analysisServer.edit.getAssists(path, offset, length);
+      final length = 1;
+      final assists = await analysisServer.edit.getAssists(path, offset, length);
       await _unloadSources();
       return assists;
     }, timeoutDuration: _ANALYSIS_SERVER_TIMEOUT));
@@ -300,19 +299,19 @@
   /// Convert between the Analysis Server type and the API protocol types.
   static api.ProblemAndFixes _convertAnalysisErrorFix(
       AnalysisErrorFixes analysisFixes) {
-    String problemMessage = analysisFixes.error.message;
-    int problemOffset = analysisFixes.error.location.offset;
-    int problemLength = analysisFixes.error.location.length;
+    final problemMessage = analysisFixes.error.message;
+    final problemOffset = analysisFixes.error.location.offset;
+    final problemLength = analysisFixes.error.location.length;
 
-    List<api.CandidateFix> possibleFixes = <api.CandidateFix>[];
+    final possibleFixes = <api.CandidateFix>[];
 
-    for (SourceChange sourceChange in analysisFixes.fixes) {
-      List<api.SourceEdit> edits = <api.SourceEdit>[];
+    for (final sourceChange in analysisFixes.fixes) {
+      final edits = <api.SourceEdit>[];
 
       // A fix that tries to modify other files is considered invalid.
 
-      bool invalidFix = false;
-      for (SourceFileEdit sourceFileEdit in sourceChange.edits) {
+      var invalidFix = false;
+      for (final sourceFileEdit in sourceChange.edits) {
         // TODO(lukechurch): replace this with a more reliable test based on the
         // psuedo file name in Analysis Server
         if (!sourceFileEdit.file.endsWith('/main.dart')) {
@@ -320,13 +319,13 @@
           break;
         }
 
-        for (SourceEdit sourceEdit in sourceFileEdit.edits) {
+        for (final sourceEdit in sourceFileEdit.edits) {
           edits.add(api.SourceEdit.fromChanges(
               sourceEdit.offset, sourceEdit.length, sourceEdit.replacement));
         }
       }
       if (!invalidFix) {
-        api.CandidateFix possibleFix =
+        final possibleFix =
             api.CandidateFix.fromEdits(sourceChange.message, edits);
         possibleFixes.add(possibleFix);
       }
@@ -337,15 +336,15 @@
 
   static List<api.CandidateFix> _convertSourceChangesToCandidateFixes(
       List<SourceChange> sourceChanges) {
-    var assists = <api.CandidateFix>[];
+    final assists = <api.CandidateFix>[];
 
-    for (var sourceChange in sourceChanges) {
-      for (SourceFileEdit sourceFileEdit in sourceChange.edits) {
+    for (final sourceChange in sourceChanges) {
+      for (final sourceFileEdit in sourceChange.edits) {
         if (!sourceFileEdit.file.endsWith('/main.dart')) {
           break;
         }
 
-        var apiSourceEdits = sourceFileEdit.edits.map((sourceEdit) {
+        final apiSourceEdits = sourceFileEdit.edits.map((sourceEdit) {
           return api.SourceEdit.fromChanges(
               sourceEdit.offset, sourceEdit.length, sourceEdit.replacement);
         }).toList();
@@ -398,11 +397,11 @@
     return serverScheduler.schedule(ClosureTask<CompletionResults>(() async {
       sources = _getOverlayMapWithPaths(sources);
       await _loadSources(sources);
-      SuggestionsResult id = await analysisServer.completion.getSuggestions(
+      final id = await analysisServer.completion.getSuggestions(
         _getPathFromName(sourceName),
         offset,
       );
-      CompletionResults results = await getCompletionResults(id.id);
+      final results = await getCompletionResults(id.id);
       await _unloadSources();
       return results;
     }, timeoutDuration: _ANALYSIS_SERVER_TIMEOUT));
@@ -411,7 +410,7 @@
   Future<FixesResult> _getFixesImpl(
       Map<String, String> sources, String sourceName, int offset) async {
     sources = _getOverlayMapWithPaths(sources);
-    String path = _getPathFromName(sourceName);
+    final path = _getPathFromName(sourceName);
 
     if (serverScheduler.queueCount > 0) {
       _logger
@@ -419,10 +418,10 @@
     }
 
     return serverScheduler.schedule(ClosureTask<FixesResult>(() async {
-      Completer<dynamic> analysisCompleter = getAnalysisCompleteCompleter();
+      final analysisCompleter = getAnalysisCompleteCompleter();
       await _loadSources(sources);
       await analysisCompleter.future;
-      FixesResult fixes = await analysisServer.edit.getFixes(path, offset);
+      final fixes = await analysisServer.edit.getFixes(path, offset);
       await _unloadSources();
       return fixes;
     }, timeoutDuration: _ANALYSIS_SERVER_TIMEOUT));
@@ -433,16 +432,15 @@
 
     return serverScheduler.schedule(ClosureTask<FormatResult>(() async {
       await _loadSources(<String, String>{mainPath: src});
-      FormatResult result =
-          await analysisServer.edit.format(mainPath, offset, 0);
+      final result = await analysisServer.edit.format(mainPath, offset, 0);
       await _unloadSources();
       return result;
     }, timeoutDuration: _ANALYSIS_SERVER_TIMEOUT));
   }
 
   Map<String, String> _getOverlayMapWithPaths(Map<String, String> overlay) {
-    Map<String, String> newOverlay = <String, String>{};
-    for (String key in overlay.keys) {
+    final newOverlay = <String, String>{};
+    for (final key in overlay.keys) {
       newOverlay[_getPathFromName(key)] = overlay[key];
     }
     return newOverlay;
@@ -473,8 +471,8 @@
   }
 
   Future<dynamic> _sendAddOverlays(Map<String, String> overlays) {
-    Map<String, ContentOverlayType> params = <String, ContentOverlayType>{};
-    for (String overlayPath in overlays.keys) {
+    final params = <String, ContentOverlayType>{};
+    for (final overlayPath in overlays.keys) {
       params[overlayPath] = AddContentOverlay(overlays[overlayPath]);
     }
 
@@ -490,8 +488,8 @@
     _logger.fine('About to send analysis.updateContent remove overlays:');
     _logger.fine('  $_overlayPaths');
 
-    Map<String, ContentOverlayType> params = <String, ContentOverlayType>{};
-    for (String overlayPath in _overlayPaths) {
+    final params = <String, ContentOverlayType>{};
+    for (final overlayPath in _overlayPaths) {
       params[overlayPath] = RemoveContentOverlay();
     }
     _overlayPaths.clear();
@@ -504,8 +502,7 @@
   void listenForCompletions() {
     analysisServer.completion.onResults.listen((CompletionResults result) {
       if (result.isLast) {
-        Completer<CompletionResults> completer =
-            _completionCompleters.remove(result.id);
+        final completer = _completionCompleters.remove(result.id);
         if (completer != null) {
           completer.complete(result);
         }
@@ -525,7 +522,7 @@
       if (status.analysis == null) return;
 
       if (!status.analysis.isAnalyzing) {
-        for (Completer<dynamic> completer in _analysisCompleters) {
+        for (final completer in _analysisCompleters) {
           completer.complete();
         }
 
@@ -535,7 +532,7 @@
   }
 
   Completer<dynamic> getAnalysisCompleteCompleter() {
-    Completer<dynamic> completer = Completer<dynamic>();
+    final completer = Completer<dynamic>();
     _analysisCompleters.add(completer);
     return completer;
   }
@@ -556,8 +553,8 @@
   void clearErrors() => _errors.clear();
 
   List<AnalysisError> getErrors() {
-    List<AnalysisError> errors = <AnalysisError>[];
-    for (List<AnalysisError> e in _errors.values) {
+    final errors = <AnalysisError>[];
+    for (final e in _errors.values) {
       errors.addAll(e);
     }
     return errors;
diff --git a/lib/src/api_classes.dart b/lib/src/api_classes.dart
index cfca8ec..4f36eab 100644
--- a/lib/src/api_classes.dart
+++ b/lib/src/api_classes.dart
@@ -36,11 +36,7 @@
       this.hasFixes = false});
 
   Map<String, dynamic> toMap() {
-    Map<String, dynamic> m = <String, dynamic>{
-      'kind': kind,
-      'line': line,
-      'message': message
-    };
+    final m = <String, dynamic>{'kind': kind, 'line': line, 'message': message};
     if (charStart != null) m['charStart'] = charStart;
     if (charLength != null) m['charLength'] = charLength;
     if (hasFixes != null) m['hasFixes'] = hasFixes;
@@ -148,8 +144,8 @@
   /// Convert any non-string values from the contained maps.
   static List<Map<String, String>> _convert(List<Map<dynamic, dynamic>> list) {
     return list.map<Map<String, String>>((Map<dynamic, dynamic> m) {
-      Map<String, String> newMap = <String, String>{};
-      for (var key in m.keys.cast<String>()) {
+      final newMap = <String, String>{};
+      for (final key in m.keys.cast<String>()) {
         dynamic data = m[key];
         // TODO: Properly support Lists, Maps (this is a hack).
         if (data is Map || data is List) {
@@ -260,8 +256,8 @@
       throw 'Change beyond end of string';
     }
 
-    String pre = '${target.substring(0, offset)}';
-    String post = '${target.substring(offset + length)}';
+    final pre = '${target.substring(0, offset)}';
+    final post = '${target.substring(offset + length)}';
     return '$pre$replacement$post';
   }
 }
diff --git a/lib/src/bench.dart b/lib/src/bench.dart
index 3274ecc..8bc6f4f 100644
--- a/lib/src/bench.dart
+++ b/lib/src/bench.dart
@@ -37,7 +37,7 @@
     log('Running ${benchmarks.length} benchmarks.');
     log('');
 
-    List<BenchMarkResult> results = <BenchMarkResult>[];
+    final results = <BenchMarkResult>[];
 
     await Future.forEach(benchmarks, (Benchmark benchmark) => benchmark.init());
 
@@ -85,8 +85,8 @@
   Future<BenchMarkResult> _time(
       Benchmark benchmark, int minIterations, int minMillis,
       [int maxMillis]) {
-    BenchMarkResult result = BenchMarkResult(benchmark);
-    Stopwatch timer = Stopwatch()..start();
+    final result = BenchMarkResult(benchmark);
+    final timer = Stopwatch()..start();
 
     return Future.doWhile(() {
       if (result.iteration >= minIterations &&
diff --git a/lib/src/common.dart b/lib/src/common.dart
index 760abd2..5aa8bfb 100644
--- a/lib/src/common.dart
+++ b/lib/src/common.dart
@@ -132,8 +132,8 @@
   final List<int> _starts = <int>[];
 
   Lines(String source) {
-    List<int> units = source.codeUnits;
-    for (int i = 0; i < units.length; i++) {
+    final units = source.codeUnits;
+    for (var i = 0; i < units.length; i++) {
       if (units[i] == 10) _starts.add(i);
     }
   }
@@ -141,7 +141,7 @@
   /// Return the 0-based line number.
   int getLineForOffset(int offset) {
     assert(offset != null);
-    for (int i = 0; i < _starts.length; i++) {
+    for (var i = 0; i < _starts.length; i++) {
       if (offset <= _starts[i]) return i;
     }
     return _starts.length;
diff --git a/lib/src/common_server.dart b/lib/src/common_server.dart
index 297c32b..1867269 100644
--- a/lib/src/common_server.dart
+++ b/lib/src/common_server.dart
@@ -124,7 +124,7 @@
       return;
     }
     log.info('$_logPrefix: reconnecting to $redisUriString...');
-    int nextRetryMs = retryTimeoutMs;
+    var nextRetryMs = retryTimeoutMs;
     if (retryTimeoutMs < _connectionRetryMaxMs / 2) {
       // 1 <= (randomSource.nextDouble() + 1) < 2
       nextRetryMs = (retryTimeoutMs * (randomSource.nextDouble() + 1)).toInt();
@@ -170,8 +170,7 @@
     if (!_isConnected()) {
       log.warning('$_logPrefix: no cache available when getting key $key');
     } else {
-      final redis.Commands<String, String> commands =
-          redisClient.asCommands<String, String>();
+      final commands = redisClient.asCommands<String, String>();
       // commands can return errors synchronously in timeout cases.
       try {
         value = await commands.get(key).timeout(cacheOperationTimeout,
@@ -195,8 +194,7 @@
       return null;
     }
 
-    final redis.Commands<String, String> commands =
-        redisClient.asCommands<String, String>();
+    final commands = redisClient.asCommands<String, String>();
     // commands can sometimes return errors synchronously in timeout cases.
     try {
       return commands.del(key: key).timeout(cacheOperationTimeout,
@@ -218,8 +216,7 @@
       return null;
     }
 
-    final redis.Commands<String, String> commands =
-        redisClient.asCommands<String, String>();
+    final commands = redisClient.asCommands<String, String>();
     // commands can sometimes return errors synchronously in timeout cases.
     try {
       return Future<void>.sync(() async {
@@ -438,12 +435,11 @@
     await _checkPackageReferencesInitFlutterWeb(source);
 
     try {
-      final Stopwatch watch = Stopwatch()..start();
+      final watch = Stopwatch()..start();
 
-      AnalysisResults results =
-          await getCorrectAnalysisServer(source).analyze(source);
-      int lineCount = source.split('\n').length;
-      int ms = watch.elapsedMilliseconds;
+      final results = await getCorrectAnalysisServer(source).analyze(source);
+      final lineCount = source.split('\n').length;
+      final ms = watch.elapsedMilliseconds;
       log.info('PERF: Analyzed $lineCount lines of Dart in ${ms}ms.');
       return results;
     } catch (e, st) {
@@ -532,7 +528,7 @@
     }
 
     log.info('CACHE: MISS for compileDDC');
-    Stopwatch watch = Stopwatch()..start();
+    final watch = Stopwatch()..start();
 
     return compiler.compileDDC(source).then((DDCCompilationResults results) {
       if (results.hasOutput) {
@@ -572,9 +568,9 @@
 
     await _checkPackageReferencesInitFlutterWeb(source);
 
-    Stopwatch watch = Stopwatch()..start();
+    final watch = Stopwatch()..start();
     try {
-      Map<String, String> docInfo =
+      var docInfo =
           await getCorrectAnalysisServer(source).dartdoc(source, offset);
       docInfo ??= <String, String>{};
       log.info('PERF: Computed dartdoc in ${watch.elapsedMilliseconds}ms.');
@@ -603,9 +599,9 @@
 
     await _checkPackageReferencesInitFlutterWeb(source);
 
-    Stopwatch watch = Stopwatch()..start();
+    final watch = Stopwatch()..start();
     try {
-      CompleteResponse response =
+      final response =
           await getCorrectAnalysisServer(source).complete(source, offset);
       log.info('PERF: Computed completions in ${watch.elapsedMilliseconds}ms.');
       return response;
@@ -626,8 +622,8 @@
 
     await _checkPackageReferencesInitFlutterWeb(source);
 
-    Stopwatch watch = Stopwatch()..start();
-    FixesResponse response =
+    final watch = Stopwatch()..start();
+    final response =
         await getCorrectAnalysisServer(source).getFixes(source, offset);
     log.info('PERF: Computed fixes in ${watch.elapsedMilliseconds}ms.');
     return response;
@@ -643,8 +639,8 @@
 
     await _checkPackageReferencesInitFlutterWeb(source);
 
-    Stopwatch watch = Stopwatch()..start();
-    var response =
+    final watch = Stopwatch()..start();
+    final response =
         await getCorrectAnalysisServer(source).getAssists(source, offset);
     log.info('PERF: Computed assists in ${watch.elapsedMilliseconds}ms.');
     return response;
@@ -656,9 +652,9 @@
     }
     offset ??= 0;
 
-    Stopwatch watch = Stopwatch()..start();
+    final watch = Stopwatch()..start();
 
-    FormatResponse response =
+    final response =
         await getCorrectAnalysisServer(source).format(source, offset);
     log.info('PERF: Computed format in ${watch.elapsedMilliseconds}ms.');
     return response;
@@ -674,7 +670,7 @@
   /// If there are uses of package:flutter, ensure that support there is
   /// initialized.
   Future<void> _checkPackageReferencesInitFlutterWeb(String source) async {
-    Set<String> imports = getAllImportsFor(source);
+    final imports = getAllImportsFor(source);
 
     if (flutterWebManager.hasUnsupportedImport(imports)) {
       throw BadRequestError(
@@ -692,7 +688,7 @@
   }
 
   AnalysisServerWrapper getCorrectAnalysisServer(String source) {
-    Set<String> imports = getAllImportsFor(source);
+    final imports = getAllImportsFor(source);
     return flutterWebManager.usesFlutterWeb(imports)
         ? flutterAnalysisServer
         : analysisServer;
diff --git a/lib/src/compiler.dart b/lib/src/compiler.dart
index 8227bb2..0b932be 100644
--- a/lib/src/compiler.dart
+++ b/lib/src/compiler.dart
@@ -50,7 +50,7 @@
     String input, {
     bool returnSourceMap = false,
   }) async {
-    Set<String> imports = getAllImportsFor(input);
+    final imports = getAllImportsFor(input);
     if (!importsOkForCompile(imports)) {
       return CompilationResults(problems: <CompilationProblem>[
         CompilationProblem._(
@@ -59,11 +59,11 @@
       ]);
     }
 
-    Directory temp = await Directory.systemTemp.createTemp('dartpad');
+    final temp = await Directory.systemTemp.createTemp('dartpad');
     _logger.info('Temp directory created: ${temp.path}');
 
     try {
-      List<String> arguments = <String>[
+      final arguments = <String>[
         '--suppress-hints',
         '--terse',
         if (!returnSourceMap) '--no-source-maps',
@@ -72,22 +72,21 @@
         kMainDart,
       ];
 
-      String compileTarget = path.join(temp.path, kMainDart);
-      File mainDart = File(compileTarget);
+      final compileTarget = path.join(temp.path, kMainDart);
+      final mainDart = File(compileTarget);
       await mainDart.writeAsString(input);
 
-      File mainJs = File(path.join(temp.path, '$kMainDart.js'));
-      File mainSourceMap = File(path.join(temp.path, '$kMainDart.js.map'));
+      final mainJs = File(path.join(temp.path, '$kMainDart.js'));
+      final mainSourceMap = File(path.join(temp.path, '$kMainDart.js.map'));
 
-      final String dart2JSPath = path.join(_sdk.sdkPath, 'bin', 'dart2js');
+      final dart2JSPath = path.join(_sdk.sdkPath, 'bin', 'dart2js');
       _logger.info('About to exec: $dart2JSPath $arguments');
 
-      ProcessResult result = await Process.run(dart2JSPath, arguments,
+      final result = await Process.run(dart2JSPath, arguments,
           workingDirectory: temp.path);
 
       if (result.exitCode != 0) {
-        final CompilationResults results =
-            CompilationResults(problems: <CompilationProblem>[
+        final results = CompilationResults(problems: <CompilationProblem>[
           CompilationProblem._(result.stdout as String),
         ]);
         return results;
@@ -96,7 +95,7 @@
         if (returnSourceMap && await mainSourceMap.exists()) {
           sourceMap = await mainSourceMap.readAsString();
         }
-        final CompilationResults results = CompilationResults(
+        final results = CompilationResults(
           compiledJS: await mainJs.readAsString(),
           sourceMap: sourceMap,
         );
@@ -113,7 +112,7 @@
 
   /// Compile the given string and return the resulting [DDCCompilationResults].
   Future<DDCCompilationResults> compileDDC(String input) async {
-    Set<String> imports = getAllImportsFor(input);
+    final imports = getAllImportsFor(input);
     if (!importsOkForCompile(imports)) {
       return DDCCompilationResults.failed(<CompilationProblem>[
         CompilationProblem._(
@@ -122,7 +121,7 @@
       ]);
     }
 
-    Directory temp = await Directory.systemTemp.createTemp('dartpad');
+    final temp = await Directory.systemTemp.createTemp('dartpad');
     _logger.info('Temp directory created: ${temp.path}');
 
     try {
@@ -136,7 +135,7 @@
       await File(bootstrapPath).writeAsString(bootstrapContents);
       await File(mainPath).writeAsString(input);
 
-      List<String> arguments = <String>[
+      final arguments = <String>[
         '--modules=amd',
         if (usingFlutter) ...[
           '-s',
@@ -150,12 +149,12 @@
         '--packages=${_flutterWebManager.packagesFilePath}',
       ];
 
-      File mainJs = File(path.join(temp.path, '$kMainDart.js'));
+      final mainJs = File(path.join(temp.path, '$kMainDart.js'));
 
       _logger.info('About to exec "$_dartdevcPath ${arguments.join(' ')}"');
       _logger.info('Compiling: $input');
 
-      final WorkResponse response =
+      final response =
           await _ddcDriver.doWork(WorkRequest()..arguments.addAll(arguments));
 
       if (response.exitCode != 0) {
@@ -170,9 +169,9 @@
         // as an individual file from baseURL. As a workaround, this replace
         // statement injects a name into the module definition.
         final processedJs = (await mainJs.readAsString())
-            .replaceFirst("define([", "define('dartpad_main', [");
+            .replaceFirst('define([', "define('dartpad_main', [");
 
-        final DDCCompilationResults results = DDCCompilationResults(
+        final results = DDCCompilationResults(
           compiledJS: processedJs,
           modulesBaseUrl: 'https://storage.googleapis.com/'
               'compilation_artifacts/${_flutterSdk.versionFull}/',
diff --git a/lib/src/config.dart b/lib/src/config.dart
index 7ce8aa6..fc8283c 100644
--- a/lib/src/config.dart
+++ b/lib/src/config.dart
@@ -14,7 +14,7 @@
     if (_singleton == null) {
       _singleton = Config._();
 
-      File file = File('config.properties');
+      final file = File('config.properties');
       if (file.existsSync()) {
         _singleton._load(file.readAsLinesSync());
       }
@@ -32,12 +32,12 @@
   void _load(List<String> lines) {
     _values.clear();
 
-    for (String line in lines) {
+    for (var line in lines) {
       line = line.trim();
       if (line.isEmpty) {
         continue;
       }
-      int index = line.indexOf('=');
+      final index = line.indexOf('=');
       if (index == -1) {
         continue;
       }
diff --git a/lib/src/dartpad_support_server.dart b/lib/src/dartpad_support_server.dart
index 4f6e8c8..5617faa 100644
--- a/lib/src/dartpad_support_server.dart
+++ b/lib/src/dartpad_support_server.dart
@@ -41,13 +41,13 @@
 
   Future<List<dynamic>> _databaseQuery<T extends db.Model>(
       String attribute, dynamic value) async {
-    List<dynamic> result = <dynamic>[];
+    var result = <dynamic>[];
     if (test) {
-      List<dynamic> dataList = database[getClass(T)];
+      final dataList = database[getClass(T)];
       if (dataList != null) {
-        for (dynamic dataObject in dataList) {
-          mirrors.InstanceMirror dataObjectMirror = mirrors.reflect(dataObject);
-          mirrors.InstanceMirror futureValue =
+        for (final dataObject in dataList) {
+          final dataObjectMirror = mirrors.reflect(dataObject);
+          final futureValue =
               dataObjectMirror.getField(Symbol(attribute.split(' ')[0]));
           if (futureValue.hasReflectee && futureValue.reflectee == value) {
             result.add(dataObject);
@@ -55,8 +55,7 @@
         }
       }
     } else {
-      db.Query<dynamic> query = ae.context.services.db.query<T>()
-        ..filter(attribute, value);
+      final query = ae.context.services.db.query<T>()..filter(attribute, value);
       result = await query.run().toList();
     }
     return Future<List<dynamic>>.value(result);
@@ -65,7 +64,7 @@
   Future<void> _databaseCommit({List<db.Model> inserts, List<db.Key> deletes}) {
     if (test) {
       if (inserts != null) {
-        for (dynamic insertObject in inserts) {
+        for (final insertObject in inserts) {
           if (!database.containsKey(getTypeName(insertObject))) {
             database[getTypeName(insertObject)] = <dynamic>[];
           }
@@ -86,8 +85,8 @@
       path: 'export',
       description: 'Store a gist dataset to be retrieved.')
   Future<UuidContainer> export(PadSaveObject data) {
-    _GaePadSaveObject record = _GaePadSaveObject.fromDSO(data);
-    String randomUuid = uuid_tools.Uuid().v4();
+    final record = _GaePadSaveObject.fromDSO(data);
+    final randomUuid = uuid_tools.Uuid().v4();
     record.uuid = '${_computeSHA1(record)}-$randomUuid';
     _databaseCommit(inserts: <db.Model>[record]).catchError((dynamic e) {
       _logger.severe('Error while recording export $e');
@@ -102,14 +101,14 @@
       path: 'pullExportData',
       description: 'Retrieve a stored gist data set.')
   Future<PadSaveObject> pullExportContent(UuidContainer uuidContainer) async {
-    List<dynamic> result =
+    final result =
         await _databaseQuery<_GaePadSaveObject>('uuid =', uuidContainer.uuid);
     if (result.isEmpty) {
       _logger
           .severe('Export with UUID ${uuidContainer.uuid} could not be found.');
       throw BadRequestError('Nothing of correct uuid could be found.');
     }
-    _GaePadSaveObject record = result.first as _GaePadSaveObject;
+    final record = result.first as _GaePadSaveObject;
     if (!test) {
       unawaited(_databaseCommit(deletes: <db.Key>[record.key])
           .catchError((dynamic e) {
@@ -123,8 +122,8 @@
 
   @ApiMethod(method: 'GET', path: 'getUnusedMappingId')
   Future<UuidContainer> getUnusedMappingId() async {
-    final int limit = 4;
-    int attemptCount = 0;
+    final limit = 4;
+    var attemptCount = 0;
     String randomUuid;
     List<dynamic> result;
     do {
@@ -145,13 +144,13 @@
 
   @ApiMethod(method: 'POST', path: 'storeGist')
   Future<UuidContainer> storeGist(GistToInternalIdMapping map) async {
-    List<dynamic> result =
+    final result =
         await _databaseQuery<_GistMapping>('internalId =', map.internalId);
     if (result.isNotEmpty) {
       _logger.severe('Collision with mapping of Id ${map.gistId}.');
       throw BadRequestError('Mapping invalid.');
     } else {
-      _GistMapping entry = _GistMapping.fromMap(map);
+      final entry = _GistMapping.fromMap(map);
       unawaited(
           _databaseCommit(inserts: <db.Model>[entry]).catchError((dynamic e) {
         _logger.severe(
@@ -168,13 +167,12 @@
     if (id == null) {
       throw BadRequestError('Missing parameter: \'id\'');
     }
-    List<dynamic> result =
-        await _databaseQuery<_GistMapping>('internalId =', id);
+    final result = await _databaseQuery<_GistMapping>('internalId =', id);
     if (result.isEmpty) {
       _logger.severe('Missing mapping for Id $id.');
       throw BadRequestError('Missing mapping for Id $id');
     } else {
-      _GistMapping entry = result.first as _GistMapping;
+      final entry = result.first as _GistMapping;
       _logger.info('Mapping with ID $id retrieved.');
       return Future<UuidContainer>.value(UuidContainer.fromUuid(entry.gistId));
     }
@@ -250,9 +248,9 @@
   }
 
   _GaePadSaveObject.fromDSO(PadSaveObject pso) {
-    dart = _gzipEncode(pso.dart != null ? pso.dart : '');
-    html = _gzipEncode(pso.html != null ? pso.html : '');
-    css = _gzipEncode(pso.css != null ? pso.css : '');
+    dart = _gzipEncode(pso.dart ?? '');
+    html = _gzipEncode(pso.html ?? '');
+    css = _gzipEncode(pso.css ?? '');
     uuid = pso.uuid;
     epochTime = DateTime.now().millisecondsSinceEpoch;
   }
@@ -288,7 +286,7 @@
 }
 
 String _computeSHA1(_GaePadSaveObject record) {
-  convert.Utf8Encoder utf8 = convert.Utf8Encoder();
+  final utf8 = convert.Utf8Encoder();
   return crypto.sha1
       .convert(utf8.convert(
           "blob  'n ${record.getDart} ${record.getHtml} ${record.getCss}"))
diff --git a/lib/src/flutter_web.dart b/lib/src/flutter_web.dart
index 2908551..1a94a50 100644
--- a/lib/src/flutter_web.dart
+++ b/lib/src/flutter_web.dart
@@ -34,12 +34,12 @@
 
   void _init() {
     // create a pubspec.yaml file
-    String pubspec = createPubspec(true);
+    final pubspec = createPubspec(true);
     File(path.join(_projectDirectory.path, 'pubspec.yaml'))
         .writeAsStringSync(pubspec);
 
     // create a .packages file
-    final String packagesFileContents = '''
+    final packagesFileContents = '''
 $_samplePackageName:lib/
 ''';
     File(path.join(_projectDirectory.path, '.packages'))
@@ -63,7 +63,7 @@
     }
 
     _logger.info('creating flutter web pubspec');
-    String pubspec = createPubspec(true);
+    final pubspec = createPubspec(true);
     await File(path.join(_projectDirectory.path, 'pubspec.yaml'))
         .writeAsString(pubspec);
 
@@ -93,7 +93,7 @@
   }
 
   String getUnsupportedImport(Set<String> imports) {
-    for (String import in imports) {
+    for (final import in imports) {
       // All dart: imports are ok;
       if (import.startsWith('dart:')) {
         continue;
@@ -149,7 +149,7 @@
   Future<int> _findFreePort({bool ipv6 = false}) async {
     var port = 0;
     ServerSocket serverSocket;
-    final InternetAddress loopback =
+    final loopback =
         ipv6 ? InternetAddress.loopbackIPv6 : InternetAddress.loopbackIPv4;
 
     try {
@@ -176,7 +176,7 @@
   static const String _samplePackageName = 'dartpad_sample';
 
   static String createPubspec(bool includeFlutterWeb) {
-    String content = '''
+    var content = '''
 name: $_samplePackageName
 ''';
 
diff --git a/lib/src/pub.dart b/lib/src/pub.dart
index 0f80733..5c3150a 100644
--- a/lib/src/pub.dart
+++ b/lib/src/pub.dart
@@ -15,14 +15,14 @@
 Set<String> getAllImportsFor(String dartSource) {
   if (dartSource == null) return <String>{};
 
-  Scanner scanner = Scanner(
+  final scanner = Scanner(
     StringSource(dartSource, kMainDart),
     CharSequenceReader(dartSource),
     AnalysisErrorListener.NULL_LISTENER,
   );
-  Token token = scanner.tokenize();
+  var token = scanner.tokenize();
 
-  Set<String> imports = <String>{};
+  final imports = <String>{};
 
   while (token.type != TokenType.EOF) {
     if (_isLibrary(token)) {
@@ -51,7 +51,7 @@
   }).map((String import) {
     return import.substring(8);
   }).map((String import) {
-    int index = import.indexOf('/');
+    final index = import.indexOf('/');
     return index == -1 ? import : import.substring(0, index);
   }).map((String import) {
     return import.replaceAll('..', '');
diff --git a/lib/src/scheduler.dart b/lib/src/scheduler.dart
index 10f499e..fd2f3fd 100644
--- a/lib/src/scheduler.dart
+++ b/lib/src/scheduler.dart
@@ -26,7 +26,7 @@
       _isActive = true;
       return _performTask(task).whenComplete(_next);
     }
-    Completer<T> taskResult = Completer<T>();
+    final taskResult = Completer<T>();
     _taskQueue.add(_Task<T>(task, taskResult));
     return taskResult.future;
   }
@@ -37,7 +37,7 @@
       _isActive = false;
       return;
     }
-    _Task<dynamic> first = _taskQueue.removeFirst();
+    final first = _taskQueue.removeFirst();
     first.taskResult.complete(_performTask(first.task).whenComplete(_next));
   }
 }
@@ -56,7 +56,7 @@
 }
 
 class ClosureTask<T> extends Task<T> {
-  Future<T> Function() _closure;
+  final Future<T> Function() _closure;
 
   ClosureTask(this._closure, {Duration timeoutDuration}) {
     this.timeoutDuration = timeoutDuration;
diff --git a/lib/src/sdk_manager.dart b/lib/src/sdk_manager.dart
index b1757f7..250a240 100644
--- a/lib/src/sdk_manager.dart
+++ b/lib/src/sdk_manager.dart
@@ -11,7 +11,8 @@
 class SdkManager {
   static Sdk get sdk => _sdk ?? (_sdk = PlatformSdk());
 
-  static FlutterSdk get flutterSdk => _flutterSdk ?? (_flutterSdk = FlutterSdk());
+  static FlutterSdk get flutterSdk =>
+      _flutterSdk ?? (_flutterSdk = FlutterSdk());
 
   static void setSdk(Sdk value) {
     _sdk = sdk;
@@ -35,7 +36,7 @@
 
   /// Report the current version of the SDK.
   String get version {
-    String ver = versionFull;
+    var ver = versionFull;
     if (ver.contains('-')) ver = ver.substring(0, ver.indexOf('-'));
     return ver;
   }
diff --git a/lib/src/summarize.dart b/lib/src/summarize.dart
index 7677e18..5a1833d 100644
--- a/lib/src/summarize.dart
+++ b/lib/src/summarize.dart
@@ -95,8 +95,8 @@
 
   String _categorySelector(String category, int itemCount) {
     if (category == 'size' || category == 'errorCount') {
-      List<int> maxField = cuttoffs[category];
-      for (int counter = 0; counter < maxField.length; counter++) {
+      final maxField = cuttoffs[category];
+      for (var counter = 0; counter < maxField.length; counter++) {
         if (itemCount < maxField[counter]) return '$category-$counter';
       }
       return '$category-${maxField.length - 1}';
@@ -107,7 +107,7 @@
 
   String _wordSelector(String category) {
     if (categories.containsKey(category)) {
-      List<String> returnSet = categories[category];
+      final returnSet = categories[category];
       return returnSet.elementAt(_randomizer % returnSet.length);
     } else {
       return null;
@@ -124,8 +124,8 @@
 
   String _additionList(List<String> list) {
     if (list.isEmpty) return '';
-    String englishList = ' Also, mentions ';
-    for (int i = 0; i < list.length; i++) {
+    var englishList = ' Also, mentions ';
+    for (var i = 0; i < list.length; i++) {
       englishList += list[i];
       if (i < list.length - 2) englishList += ', ';
       if (i == list.length - 2) {
@@ -143,16 +143,16 @@
   bool _usedInDartSource(String feature) => dart.contains(feature);
 
   List<String> _additionSearch() {
-    List<String> features = <String>[];
-    for (String feature in additionKeyWords.keys) {
+    final features = <String>[];
+    for (final feature in additionKeyWords.keys) {
       if (_usedInDartSource(feature)) features.add(additionKeyWords[feature]);
     }
     return features;
   }
 
   List<String> _codeSearch() {
-    List<String> features = <String>[];
-    for (String feature in codeKeyWords.keys) {
+    final features = <String>[];
+    for (final feature in codeKeyWords.keys) {
       if (_usedInDartSource(feature)) features.add(codeKeyWords[feature]);
     }
     return features;
@@ -160,8 +160,8 @@
 
   String _featureList(List<String> list) {
     if (list.isEmpty) return '. ';
-    String englishList = ', and ${_sentenceFiller('use')} use of ';
-    for (int i = 0; i < list.length; i++) {
+    var englishList = ', and ${_sentenceFiller('use')} use of ';
+    for (var i = 0; i < list.length; i++) {
       englishList += list[i];
       if (i < list.length - 2) englishList += ', ';
       if (i == list.length - 2) {
@@ -178,14 +178,14 @@
       return source == null ? '' : '. ';
     }
 
-    String englishList = '';
+    var englishList = '';
     if (source == 'packages') {
       englishList += ', and ${_sentenceFiller('code-0')} imports ';
     } else {
       englishList += '${_sentenceFiller('code-1')} imports the ';
     }
 
-    for (int i = 0; i < list.length; i++) {
+    for (var i = 0; i < list.length; i++) {
       englishList += "'${list[i]}'";
       if (i < list.length - 2) englishList += ', ';
       if (i == list.length - 2) {
@@ -204,7 +204,7 @@
   }
 
   String _htmlCSS() {
-    String htmlCSS = 'This code has ';
+    var htmlCSS = 'This code has ';
     if (_hasCSS && _hasHtml) {
       htmlCSS += 'associated html and css';
       return htmlCSS;
@@ -233,7 +233,7 @@
 
   String returnAsSimpleSummary() {
     if (hasAnalysisResults) {
-      String summary = '';
+      var summary = '';
       summary += 'This ${_sentenceFiller('size', storage.linesCode)} ';
       if (storage.errorPresent) {
         summary += '${_sentenceFiller('failedQuantifier')} contains ';
@@ -248,7 +248,7 @@
       summary += '${_additionList(_additionSearch())}';
       return summary.trim();
     } else {
-      String summary = 'Summary: ';
+      var summary = 'Summary: ';
       summary += 'This is a ${_sentenceFiller('size', storage.linesCode)} ';
       summary += '${_sentenceFiller('compiledQuantifier')}';
       summary += '${_featureList(_codeSearch())}';
diff --git a/pubspec.yaml b/pubspec.yaml
index 3d7fa3c..85d4d1c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -29,7 +29,7 @@
   codemirror: ^0.5.6
   coverage: ^0.13.0
   grinder: ^0.8.0
-  pedantic: ^1.8.0
+  pedantic: ^1.9.0
   synchronized: ^2.1.0
   test: ^1.6.4
   tuneup: ^0.3.6
diff --git a/test/analysis_server_test.dart b/test/analysis_server_test.dart
index 0f7bda2..f290954 100644
--- a/test/analysis_server_test.dart
+++ b/test/analysis_server_test.dart
@@ -102,7 +102,7 @@
     });
 
     test('import_test', () {
-      String testCode = "import '/'; main() { int a = 0; a. }";
+      final testCode = "import '/'; main() { int a = 0; a. }";
 
       return analysisServer
           .complete(testCode, 9)
@@ -114,7 +114,7 @@
     });
 
     test('import_and_other_test', () {
-      String testCode = "import '/'; main() { int a = 0; a. }";
+      final testCode = "import '/'; main() { int a = 0; a. }";
 
       return analysisServer
           .complete(testCode, 34)
@@ -148,43 +148,43 @@
     });
 
     test('simple_format', () async {
-      FormatResponse results = await analysisServer.format(badFormatCode, 0);
+      final results = await analysisServer.format(badFormatCode, 0);
       expect(results.newString, formattedCode);
     });
 
     test('format good code', () async {
-      FormatResponse results =
+      final results =
           await analysisServer.format(formattedCode.replaceAll('\n', ' '), 0);
       expect(results.newString, formattedCode);
     });
 
     test('format with issues', () async {
-      FormatResponse results = await analysisServer.format(formatWithIssues, 0);
+      final results = await analysisServer.format(formatWithIssues, 0);
       expect(results.newString, formatWithIssues);
     });
 
     test('analyze', () async {
-      AnalysisResults results = await analysisServer.analyze(sampleCode);
+      final results = await analysisServer.analyze(sampleCode);
       expect(results.issues, isEmpty);
     });
 
     test('analyze with errors', () async {
-      AnalysisResults results = await analysisServer.analyze(sampleCodeError);
+      final results = await analysisServer.analyze(sampleCodeError);
       expect(results.issues, hasLength(1));
     });
 
     test('analyze strong', () async {
-      AnalysisResults results = await analysisServer.analyze(sampleStrongError);
+      final results = await analysisServer.analyze(sampleStrongError);
       expect(results.issues, hasLength(1));
-      AnalysisIssue issue = results.issues.first;
+      final issue = results.issues.first;
       expect(issue.kind, 'error');
     });
 
     test('filter completions', () async {
       // just after A
-      var idx = 61;
+      final idx = 61;
       expect(completionLargeNamespaces.substring(idx - 1, idx), 'A');
-      var results =
+      final results =
           await analysisServer.complete(completionLargeNamespaces, 61);
       expect(completionsContains(results, 'A'), true);
       expect(completionsContains(results, 'AB'), true);
@@ -197,19 +197,20 @@
   group('Flutter cached SDK analysis_server', () {
     setUp(() async {
       flutterWebManager = FlutterWebManager(SdkManager.flutterSdk);
-      analysisServer = AnalysisServerWrapper(SdkManager.flutterSdk.sdkPath, flutterWebManager);
+      analysisServer = AnalysisServerWrapper(
+          SdkManager.flutterSdk.sdkPath, flutterWebManager);
       await analysisServer.init();
     });
 
     tearDown(() => analysisServer.shutdown());
 
     test('analyze working Dart code', () async {
-      AnalysisResults results = await analysisServer.analyze(sampleCode);
+      final results = await analysisServer.analyze(sampleCode);
       expect(results.issues, isEmpty);
     });
 
     test('analyze working Flutter code', () async {
-      AnalysisResults results = await analysisServer.analyze(sampleCode);
+      final results = await analysisServer.analyze(sampleCode);
       expect(results.issues, isEmpty);
     });
   });
diff --git a/test/api_classes_test.dart b/test/api_classes_test.dart
index c9ffd57..b947376 100644
--- a/test/api_classes_test.dart
+++ b/test/api_classes_test.dart
@@ -23,7 +23,7 @@
     });
 
     test('toString', () {
-      AnalysisIssue issue = AnalysisIssue.fromIssue('error', 1, 'not found');
+      final issue = AnalysisIssue.fromIssue('error', 1, 'not found');
       expect(issue.toString(), isNotNull);
     });
   });
diff --git a/test/bench_test.dart b/test/bench_test.dart
index 508b28c..afd2260 100644
--- a/test/bench_test.dart
+++ b/test/bench_test.dart
@@ -14,8 +14,8 @@
 void defineTests() {
   group('BenchmarkHarness', () {
     test('single', () {
-      BenchmarkHarness harness = BenchmarkHarness(asJson: true);
-      MockBenchmark benchmark = MockBenchmark();
+      final harness = BenchmarkHarness(asJson: true);
+      final benchmark = MockBenchmark();
 
       return harness.benchmarkSingle(benchmark).then((BenchMarkResult result) {
         expect(result.iteration, greaterThan(1));
@@ -27,9 +27,9 @@
     });
 
     test('many', () {
-      BenchmarkHarness harness =
+      final harness =
           BenchmarkHarness(asJson: true, logger: (_) => null);
-      List<MockBenchmark> benchmarks = [MockBenchmark(), MockBenchmark()];
+      final benchmarks = [MockBenchmark(), MockBenchmark()];
 
       return harness.benchmark(benchmarks).then((_) {
         expect(benchmarks[0].count, greaterThan(80));
diff --git a/test/common_server_test.dart b/test/common_server_test.dart
index 34c013e..45a7c75 100644
--- a/test/common_server_test.dart
+++ b/test/common_server_test.dart
@@ -63,19 +63,19 @@
 
   Future<HttpApiResponse> _sendPostRequest(String path, jsonData) {
     assert(apiServer != null);
-    var uri = Uri.parse('/api/$path');
-    var body = Stream.fromIterable([utf8.encode(json.encode(jsonData))]);
-    var request = HttpApiRequest(
+    final uri = Uri.parse('/api/$path');
+    final body = Stream.fromIterable([utf8.encode(json.encode(jsonData))]);
+    final request = HttpApiRequest(
         'POST', uri, {'content-type': 'application/json; charset=utf-8'}, body);
     return apiServer.handleHttpApiRequest(request);
   }
 
   Future<HttpApiResponse> _sendGetRequest(String path, [String queryParams]) {
     assert(apiServer != null);
-    var uri = Uri.parse(
+    final uri = Uri.parse(
         queryParams == null ? '/api/$path' : '/api/$path?$queryParams');
-    var body = Stream<List<int>>.fromIterable([]);
-    var request = HttpApiRequest(
+    final body = Stream<List<int>>.fromIterable([]);
+    final request = HttpApiRequest(
         'GET', uri, {'content-type': 'application/json; charset=utf-8'}, body);
     return apiServer.handleHttpApiRequest(request);
   }
@@ -88,17 +88,17 @@
     // Note: all caches share values between them.
     RedisCache redisCache, redisCacheAlt;
     Process redisProcess, redisAltProcess;
-    List<String> logMessages = [];
+    var logMessages = <String>[];
     // Critical section handling -- do not run more than one test at a time
     // since they talk to the same redis instances.
-    Lock singleTestOnly = Lock();
+    final singleTestOnly = Lock();
 
     // Prevent cases where we might try to reenter addStream for either stdout
     // or stderr (which will throw a BadState).
-    Lock singleStreamOnly = Lock();
+    final singleStreamOnly = Lock();
 
     Future<Process> startRedisProcessAndDrainIO(int port) async {
-      Process newRedisProcess =
+      final newRedisProcess =
           await Process.start('redis-server', ['--port', port.toString()]);
       unawaited(singleStreamOnly.synchronized(() async {
         await stdout.addStream(newRedisProcess.stdout);
@@ -177,7 +177,7 @@
     test('Verify disconnected cache logs errors and returns nulls', () async {
       await singleTestOnly.synchronized(() async {
         logMessages = [];
-        RedisCache redisCacheBroken =
+        final redisCacheBroken =
             RedisCache('redis://localhost:9502', 'cversion');
         try {
           await redisCacheBroken.set('aKey', 'value');
@@ -203,7 +203,7 @@
         () async {
       await singleTestOnly.synchronized(() async {
         logMessages = [];
-        RedisCache redisCacheRepairable =
+        final redisCacheRepairable =
             RedisCache('redis://localhost:9503', 'cversion');
         try {
           // Wait for a retry message.
@@ -237,7 +237,7 @@
         await redisCache.set('beforeStop', 'truth');
         redisProcess.kill(ProcessSignal.sigstop);
         // Don't fail the test before sending sigcont.
-        var beforeStop = await redisCache.get('beforeStop');
+        final beforeStop = await redisCache.get('beforeStop');
         await redisCache.disconnected;
         redisProcess.kill(ProcessSignal.sigcont);
         expect(beforeStop, isNull);
@@ -261,7 +261,7 @@
         logMessages = [];
 
         redisAltProcess = await startRedisProcessAndDrainIO(9504);
-        RedisCache redisCacheHealing =
+        final redisCacheHealing =
             RedisCache('redis://localhost:9504', 'cversion');
         try {
           await redisCacheHealing.connected;
@@ -313,14 +313,14 @@
       // happening and deal with that in warmup/init.
       {
         var decodedJson = {};
-        var jsonData = {'source': sampleCodeError};
+        final jsonData = {'source': sampleCodeError};
         while (decodedJson.isEmpty) {
-          var response =
+          final response =
               await _sendPostRequest('dartservices/v1/analyze', jsonData);
           expect(response.status, 200);
           expect(response.headers['content-type'],
               'application/json; charset=utf-8');
-          var data = await response.body.first;
+          final data = await response.body.first;
           decodedJson = json.decode(utf8.decode(data)) as Map<dynamic, dynamic>;
         }
       }
@@ -339,34 +339,36 @@
     tearDown(log.clearListeners);
 
     test('analyze Dart', () async {
-      var jsonData = {'source': sampleCode};
-      var response =
-      await _sendPostRequest('dartservices/v1/analyze', jsonData);
+      final jsonData = {'source': sampleCode};
+      final response =
+          await _sendPostRequest('dartservices/v1/analyze', jsonData);
       expect(response.status, 200);
-      var data = await response.body.first;
+      final data = await response.body.first;
       expect(
           json.decode(utf8.decode(data)), {'issues': [], 'packageImports': []});
     });
 
     test('analyze Flutter', () async {
-      var jsonData = {'source': sampleCodeFlutter};
-      var response =
-      await _sendPostRequest('dartservices/v1/analyze', jsonData);
+      final jsonData = {'source': sampleCodeFlutter};
+      final response =
+          await _sendPostRequest('dartservices/v1/analyze', jsonData);
       expect(response.status, 200);
-      var data = await response.body.first;
-      expect(
-          json.decode(utf8.decode(data)), {'issues': [], 'packageImports': ['flutter']});
+      final data = await response.body.first;
+      expect(json.decode(utf8.decode(data)), {
+        'issues': [],
+        'packageImports': ['flutter']
+      });
     });
 
     test('analyze errors', () async {
-      var jsonData = {'source': sampleCodeError};
-      var response =
+      final jsonData = {'source': sampleCodeError};
+      final response =
           await _sendPostRequest('dartservices/v1/analyze', jsonData);
       expect(response.status, 200);
       expect(
           response.headers['content-type'], 'application/json; charset=utf-8');
-      var data = await response.body.first;
-      var expectedJson = {
+      final data = await response.body.first;
+      final expectedJson = {
         'issues': [
           {
             'kind': 'error',
@@ -384,177 +386,177 @@
     });
 
     test('analyze negative-test noSource', () async {
-      var jsonData = {};
-      var response =
+      final jsonData = {};
+      final response =
           await _sendPostRequest('dartservices/v1/analyze', jsonData);
       expect(response.status, 400);
     });
 
     test('compile', () async {
-      var jsonData = {'source': sampleCode};
-      var response =
+      final jsonData = {'source': sampleCode};
+      final response =
           await _sendPostRequest('dartservices/v1/compile', jsonData);
       expect(response.status, 200);
-      var data = await response.body.first;
+      final data = await response.body.first;
       expect(json.decode(utf8.decode(data)), isNotEmpty);
     });
 
     test('compile error', () async {
-      var jsonData = {'source': sampleCodeError};
-      var response =
+      final jsonData = {'source': sampleCodeError};
+      final response =
           await _sendPostRequest('dartservices/v1/compile', jsonData);
       expect(response.status, 400);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data, isNotEmpty);
       expect(data['error']['message'], contains('Error: Expected'));
     });
 
     test('compile negative-test noSource', () async {
-      var jsonData = {};
-      var response =
+      final jsonData = {};
+      final response =
           await _sendPostRequest('dartservices/v1/compile', jsonData);
       expect(response.status, 400);
     });
 
     test('compileDDC', () async {
-      var jsonData = {'source': sampleCode};
-      var response =
+      final jsonData = {'source': sampleCode};
+      final response =
           await _sendPostRequest('dartservices/v1/compileDDC', jsonData);
       expect(response.status, 200);
-      var data = await response.body.first;
+      final data = await response.body.first;
       expect(json.decode(utf8.decode(data)), isNotEmpty);
     });
 
     test('complete', () async {
-      var jsonData = {'source': 'void main() {print("foo");}', 'offset': 1};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}', 'offset': 1};
+      final response =
           await _sendPostRequest('dartservices/v1/complete', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data, isNotEmpty);
     });
 
     test('complete no data', () async {
-      var response = await _sendPostRequest('dartservices/v1/complete', {});
+      final response = await _sendPostRequest('dartservices/v1/complete', {});
       expect(response.status, 400);
     });
 
     test('complete param missing', () async {
-      var jsonData = {'offset': 1};
-      var response =
+      final jsonData = {'offset': 1};
+      final response =
           await _sendPostRequest('dartservices/v1/complete', jsonData);
       expect(response.status, 400);
     });
 
     test('complete param missing 2', () async {
-      var jsonData = {'source': 'void main() {print("foo");}'};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}'};
+      final response =
           await _sendPostRequest('dartservices/v1/complete', jsonData);
       expect(response.status, 400);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['error']['message'], 'Missing parameter: \'offset\'');
     });
 
     test('document', () async {
-      var jsonData = {'source': 'void main() {print("foo");}', 'offset': 17};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}', 'offset': 17};
+      final response =
           await _sendPostRequest('dartservices/v1/document', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data, isNotEmpty);
     });
 
     test('document little data', () async {
-      var jsonData = {'source': 'void main() {print("foo");}', 'offset': 2};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}', 'offset': 2};
+      final response =
           await _sendPostRequest('dartservices/v1/document', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data, {
         'info': {},
       });
     });
 
     test('document no data', () async {
-      var jsonData = {'source': 'void main() {print("foo");}', 'offset': 12};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}', 'offset': 12};
+      final response =
           await _sendPostRequest('dartservices/v1/document', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data, {'info': {}});
     });
 
     test('document negative-test noSource', () async {
-      var jsonData = {'offset': 12};
-      var response =
+      final jsonData = {'offset': 12};
+      final response =
           await _sendPostRequest('dartservices/v1/document', jsonData);
       expect(response.status, 400);
     });
 
     test('document negative-test noOffset', () async {
-      var jsonData = {'source': 'void main() {print("foo");}'};
-      var response =
+      final jsonData = {'source': 'void main() {print("foo");}'};
+      final response =
           await _sendPostRequest('dartservices/v1/document', jsonData);
       expect(response.status, 400);
     });
 
     test('format', () async {
-      var jsonData = {'source': preFormattedCode};
-      var response = await _sendPostRequest('dartservices/v1/format', jsonData);
+      final jsonData = {'source': preFormattedCode};
+      final response = await _sendPostRequest('dartservices/v1/format', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['newString'], postFormattedCode);
     });
 
     test('format bad code', () async {
-      var jsonData = {'source': formatBadCode};
-      var response = await _sendPostRequest('dartservices/v1/format', jsonData);
+      final jsonData = {'source': formatBadCode};
+      final response = await _sendPostRequest('dartservices/v1/format', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['newString'], formatBadCode);
     });
 
     test('format position', () async {
-      var jsonData = {'source': preFormattedCode, 'offset': 21};
-      var response = await _sendPostRequest('dartservices/v1/format', jsonData);
+      final jsonData = {'source': preFormattedCode, 'offset': 21};
+      final response = await _sendPostRequest('dartservices/v1/format', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['newString'], postFormattedCode);
       expect(data['offset'], 24);
     });
 
     test('fix', () async {
-      var jsonData = {'source': quickFixesCode, 'offset': 10};
-      var response = await _sendPostRequest('dartservices/v1/fixes', jsonData);
+      final jsonData = {'source': quickFixesCode, 'offset': 10};
+      final response = await _sendPostRequest('dartservices/v1/fixes', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
-      var fixes = data['fixes'];
+      final data = json.decode(utf8.decode(await response.body.first));
+      final fixes = data['fixes'];
       expect(fixes.length, 1);
-      var problemAndFix = fixes[0];
+      final problemAndFix = fixes[0];
       expect(problemAndFix['problemMessage'], isNotNull);
     });
 
     test('assist', () async {
-      var jsonData = {'source': assistCode, 'offset': 15};
-      var response =
+      final jsonData = {'source': assistCode, 'offset': 15};
+      final response =
           await _sendPostRequest('dartservices/v1/assists', jsonData);
       expect(response.status, 200);
 
-      var data = json.decode(utf8.decode(await response.body.first));
-      var assists = data['assists'] as List;
+      final data = json.decode(utf8.decode(await response.body.first));
+      final assists = data['assists'] as List;
       expect(assists, hasLength(2));
       expect(assists.first['edits'], isNotNull);
       expect(assists.first['edits'], hasLength(1));
       expect(assists.where((m) {
-        var map = m as Map<String, dynamic>;
+        final map = m as Map<String, dynamic>;
         return map['message'] == 'Remove type annotation';
       }), isNotEmpty);
     });
 
     test('version', () async {
-      var response = await _sendGetRequest('dartservices/v1/version');
+      final response = await _sendGetRequest('dartservices/v1/version');
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['sdkVersion'], isNotNull);
       expect(data['runtimeVersion'], isNotNull);
     });
diff --git a/test/compiler_test.dart b/test/compiler_test.dart
index 00dde04..9375ad1 100644
--- a/test/compiler_test.dart
+++ b/test/compiler_test.dart
@@ -200,7 +200,7 @@
     });
 
     test('disallow compiler warnings', () async {
-      CompilationResults result = await compiler.compile(sampleCodeErrors);
+      final result = await compiler.compile(sampleCodeErrors);
       expect(result.success, false);
     });
 
diff --git a/test/dartpad_server_test.dart b/test/dartpad_server_test.dart
index 3665edf..0cfa1e9 100644
--- a/test/dartpad_server_test.dart
+++ b/test/dartpad_server_test.dart
@@ -44,59 +44,59 @@
 
   Future<HttpApiResponse> _sendPostRequest(String path, jsonData) {
     assert(apiServer != null);
-    var uri = Uri.parse('/api/$path');
-    var body = Stream.fromIterable([utf8.encode(json.encode(jsonData))]);
-    var request = HttpApiRequest(
+    final uri = Uri.parse('/api/$path');
+    final body = Stream.fromIterable([utf8.encode(json.encode(jsonData))]);
+    final request = HttpApiRequest(
         'POST', uri, {'content-type': 'application/json; charset=utf-8'}, body);
     return apiServer.handleHttpApiRequest(request);
   }
 
   Future<HttpApiResponse> _sendGetRequest(String path, [String queryParams]) {
     assert(apiServer != null);
-    var uri = Uri.parse(
+    final uri = Uri.parse(
         queryParams == null ? '/api/$path' : '/api/$path?$queryParams');
-    var body = Stream<List<int>>.fromIterable([]);
-    var request = HttpApiRequest(
+    final body = Stream<List<int>>.fromIterable([]);
+    final request = HttpApiRequest(
         'GET', uri, {'content-type': 'application/json; charset=utf-8'}, body);
     return apiServer.handleHttpApiRequest(request);
   }
 
   group('ExportServer', () {
     test('Export', () async {
-      var jsonData = {'dart': 'test', 'html': '', 'css': '', 'uuid': ''};
-      var response =
+      final jsonData = {'dart': 'test', 'html': '', 'css': '', 'uuid': ''};
+      final response =
           await _sendPostRequest('_dartpadsupportservices/v1/export', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
     });
 
     test('Export uuid different', () async {
-      var jsonData = {'dart': 'test', 'html': '', 'css': '', 'uuid': ''};
-      var response =
+      final jsonData = {'dart': 'test', 'html': '', 'css': '', 'uuid': ''};
+      final response =
           await _sendPostRequest('_dartpadsupportservices/v1/export', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
-      var responseTwo =
+      final responseTwo =
           await _sendPostRequest('_dartpadsupportservices/v1/export', jsonData);
       expect(responseTwo.status, 200);
-      var dataTwo = json.decode(utf8.decode(await responseTwo.body.first));
+      final dataTwo = json.decode(utf8.decode(await responseTwo.body.first));
       expect(dataTwo['uuid'] == data['uuid'], false);
     });
 
     test('Pull export', () async {
       var jsonData = {'dart': sampleCode, 'html': '', 'css': ''};
-      var response =
+      final response =
           await _sendPostRequest('_dartpadsupportservices/v1/export', jsonData);
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
       jsonData = {'uuid': data['uuid'] as String};
-      var pull = await _sendPostRequest(
+      final pull = await _sendPostRequest(
           '_dartpadsupportservices/v1/pullExportData', jsonData);
       expect(pull.status, 200);
-      var pullData = json.decode(utf8.decode(await pull.body.first));
+      final pullData = json.decode(utf8.decode(await pull.body.first));
       expect(pullData['dart'], sampleCode);
       expect(pullData['html'], '');
       expect(pullData['css'], '');
@@ -107,45 +107,45 @@
 
   group('GistMapping', () {
     test('ID request', () async {
-      var response = await _sendGetRequest(
+      final response = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
-      var responseTwo = await _sendGetRequest(
+      final responseTwo = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
       expect(responseTwo.status, 200);
-      var dataTwo = json.decode(utf8.decode(await responseTwo.body.first));
+      final dataTwo = json.decode(utf8.decode(await responseTwo.body.first));
       expect(data['uuid'] == dataTwo['uuid'], false);
     });
 
     test('Store gist', () async {
-      var response = await _sendGetRequest(
+      final response = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
-      String gistId = 'teststore';
+      final gistId = 'teststore';
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
-      var jsonData = {'gistId': gistId, 'internalId': data['uuid']};
-      var postResponse = await _sendPostRequest(
+      final jsonData = {'gistId': gistId, 'internalId': data['uuid']};
+      final postResponse = await _sendPostRequest(
           '_dartpadsupportservices/v1/storeGist', jsonData);
       expect(postResponse.status, 200);
-      var postData = json.decode(utf8.decode(await postResponse.body.first));
+      final postData = json.decode(utf8.decode(await postResponse.body.first));
       expect(postData['uuid'], gistId);
     });
 
     test('Store gist failure', () async {
-      var response = await _sendGetRequest(
+      final response = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
-      String gistId = 'testfail';
+      final gistId = 'testfail';
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
       var jsonData = {'gistId': gistId, 'internalId': data['uuid']};
       var postResponse = await _sendPostRequest(
           '_dartpadsupportservices/v1/storeGist', jsonData);
       expect(postResponse.status, 200);
-      var postData = json.decode(utf8.decode(await postResponse.body.first));
+      final postData = json.decode(utf8.decode(await postResponse.body.first));
       expect(postData['uuid'], gistId);
       jsonData = {'gistId': 'failure', 'internalId': data['uuid']};
       postResponse = await _sendPostRequest(
@@ -154,32 +154,32 @@
     });
 
     test('Retrieve gist success', () async {
-      var response = await _sendGetRequest(
+      final response = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
-      String gistId = 'testretrieve';
+      final gistId = 'testretrieve';
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
-      var jsonData = {'gistId': gistId, 'internalId': data['uuid']};
-      var postResponse = await _sendPostRequest(
+      final jsonData = {'gistId': gistId, 'internalId': data['uuid']};
+      final postResponse = await _sendPostRequest(
           '_dartpadsupportservices/v1/storeGist', jsonData);
       expect(postResponse.status, 200);
-      var postData = json.decode(utf8.decode(await postResponse.body.first));
+      final postData = json.decode(utf8.decode(await postResponse.body.first));
       expect(postData['uuid'], gistId);
-      var getResponse = await _sendGetRequest(
+      final getResponse = await _sendGetRequest(
           '_dartpadsupportservices/v1/retrieveGist', 'id=${data['uuid']}');
       expect(getResponse.status, 200);
-      var getData = json.decode(utf8.decode(await getResponse.body.first));
+      final getData = json.decode(utf8.decode(await getResponse.body.first));
       expect(getData['uuid'], gistId);
     });
 
     test('Retrieve gist failure', () async {
-      var response = await _sendGetRequest(
+      final response = await _sendGetRequest(
           '_dartpadsupportservices/v1/getUnusedMappingId');
       expect(response.status, 200);
-      var data = json.decode(utf8.decode(await response.body.first));
+      final data = json.decode(utf8.decode(await response.body.first));
       expect(data['uuid'], isNotNull);
-      var getResponse = await _sendGetRequest(
+      final getResponse = await _sendGetRequest(
           '_dartpadsupportservices/v1/retrieveGist', 'id=${data['uuid']}');
       expect(getResponse.status, 400);
     });
diff --git a/test/flutter_web_test.dart b/test/flutter_web_test.dart
index 069842e..0ac644d 100644
--- a/test/flutter_web_test.dart
+++ b/test/flutter_web_test.dart
@@ -26,7 +26,7 @@
 
     test('inited', () {
       expect(flutterWebManager.projectDirectory.existsSync(), isTrue);
-      File file = File(flutterWebManager.packagesFilePath);
+      final file = File(flutterWebManager.packagesFilePath);
       expect(file.existsSync(), isTrue);
     });
 
@@ -64,19 +64,19 @@
     });
 
     test('packagesFilePath', () {
-      String packagesPath = flutterWebManager.packagesFilePath;
+      final packagesPath = flutterWebManager.packagesFilePath;
       expect(packagesPath, isNotEmpty);
 
-      File file = File(packagesPath);
-      List<String> lines = file.readAsLinesSync();
+      final file = File(packagesPath);
+      final lines = file.readAsLinesSync();
       expect(lines, anyElement(startsWith('flutter:file://')));
     });
 
     test('summaryFilePath', () {
-      String summaryFilePath = flutterWebManager.summaryFilePath;
+      final summaryFilePath = flutterWebManager.summaryFilePath;
       expect(summaryFilePath, isNotEmpty);
 
-      File file = File(summaryFilePath);
+      final file = File(summaryFilePath);
       expect(file.existsSync(), isTrue);
     });
   });
diff --git a/test/gae_deployed_test.dart b/test/gae_deployed_test.dart
index 15b12a9..6c2bd0d 100644
--- a/test/gae_deployed_test.dart
+++ b/test/gae_deployed_test.dart
@@ -21,7 +21,7 @@
 }
 
 void analyzeTest() {
-  final String url = '$serverUrl/api/analyze';
+  final url = '$serverUrl/api/analyze';
   final headers = {'Content-Type': 'text/plain; charset=UTF-8'};
 
   expect(
@@ -36,7 +36,7 @@
 }
 
 void compileTest() {
-  final String url = '$serverUrl/api/compile';
+  final url = '$serverUrl/api/compile';
   final headers = {'Content-Type': 'text/plain; charset=UTF-8'};
 
   expect(
@@ -51,7 +51,7 @@
 }
 
 void compileDDCTest() {
-  final String url = '$serverUrl/api/compileDDC';
+  final url = '$serverUrl/api/compileDDC';
   final headers = {'Content-Type': 'text/plain; charset=UTF-8'};
 
   expect(
diff --git a/tool/fuzz_driver.dart b/tool/fuzz_driver.dart
index 3d6471e..8d5b8b5 100644
--- a/tool/fuzz_driver.dart
+++ b/tool/fuzz_driver.dart
@@ -58,19 +58,19 @@
   }
 
   // TODO: Replace this with args package.
-  int seed = 0;
-  String testCollectionRoot = args[0];
+  var seed = 0;
+  final testCollectionRoot = args[0];
   if (args.length >= 2) seed = int.parse(args[1]);
   if (args.length >= 3) maxMutations = int.parse(args[2]);
   if (args.length >= 4) iterations = int.parse(args[3]);
   if (args.length >= 5) commandToRun = args[4];
   if (args.length >= 6) dumpServerComms = args[5].toLowerCase() == 'true';
-  String sdk = sdkPath;
+  final sdk = sdkPath;
 
   // Load the list of files.
   var fileEntities = <io.FileSystemEntity>[];
   if (io.FileSystemEntity.isDirectorySync(testCollectionRoot)) {
-    io.Directory dir = io.Directory(testCollectionRoot);
+    final dir = io.Directory(testCollectionRoot);
     fileEntities = dir.listSync(recursive: true);
   } else {
     fileEntities = [io.File(testCollectionRoot)];
@@ -78,8 +78,8 @@
 
   analysis_server.dumpServerMessages = false;
 
-  int counter = 0;
-  Stopwatch sw = Stopwatch()..start();
+  var counter = 0;
+  final sw = Stopwatch()..start();
 
   print('About to setuptools');
   print(sdk);
@@ -90,7 +90,7 @@
   print('Setup tools done');
 
   // Main testing loop.
-  for (var fse in fileEntities) {
+  for (final fse in fileEntities) {
     counter++;
     if (!fse.path.endsWith('.dart')) continue;
 
@@ -124,7 +124,8 @@
 
   print('SdKPath: $sdkPath');
 
-  FlutterWebManager flutterWebManager = FlutterWebManager(SdkManager.flutterSdk);
+  final flutterWebManager =
+      FlutterWebManager(SdkManager.flutterSdk);
 
   container = MockContainer();
   cache = MockCache();
@@ -141,20 +142,21 @@
   await analysisServer.warmup();
 
   print('Warming up compiler');
-  compiler = comp.Compiler(SdkManager.sdk, SdkManager.flutterSdk, flutterWebManager);
+  compiler =
+      comp.Compiler(SdkManager.sdk, SdkManager.flutterSdk, flutterWebManager);
   await compiler.warmup();
   print('SetupTools done');
 }
 
 Future testPath(String path, analysis_server.AnalysisServerWrapper wrapper,
     comp.Compiler compiler) async {
-  var f = io.File(path);
-  String src = f.readAsStringSync();
+  final f = io.File(path);
+  var src = f.readAsStringSync();
 
   print('Path, Compilation/ms, Analysis/ms, '
       'Completion/ms, Document/ms, Fixes/ms, Format/ms');
 
-  for (int i = 0; i < iterations; i++) {
+  for (var i = 0; i < iterations; i++) {
     // Run once for each file without mutation.
     num averageCompilationTime = 0;
     num averageAnalysisTime = 0;
@@ -223,9 +225,9 @@
     if (maxMutations == 0) break;
 
     // And then for the remainder with an increasing mutated file.
-    int noChanges = random.nextInt(maxMutations);
+    final noChanges = random.nextInt(maxMutations);
 
-    for (int j = 0; j < noChanges; j++) {
+    for (var j = 0; j < noChanges; j++) {
       src = mutate(src);
     }
   }
@@ -234,11 +236,11 @@
 Future<num> testAnalysis(
     String src, analysis_server.AnalysisServerWrapper analysisServer) async {
   lastExecuted = OperationType.Analysis;
-  Stopwatch sw = Stopwatch()..start();
+  final sw = Stopwatch()..start();
 
   lastOffset = null;
   if (_SERVER_BASED_CALL) {
-    SourceRequest request = SourceRequest();
+    final request = SourceRequest();
     request.source = src;
     await withTimeOut(server.analyze(request));
     await withTimeOut(server.analyze(request));
@@ -253,11 +255,11 @@
 
 Future<num> testCompilation(String src, comp.Compiler compiler) async {
   lastExecuted = OperationType.Compilation;
-  Stopwatch sw = Stopwatch()..start();
+  final sw = Stopwatch()..start();
 
   lastOffset = null;
   if (_SERVER_BASED_CALL) {
-    CompileRequest request = CompileRequest();
+    final request = CompileRequest();
     request.source = src;
     await withTimeOut(server.compile(request));
   } else {
@@ -271,14 +273,14 @@
 Future<num> testDocument(
     String src, analysis_server.AnalysisServerWrapper analysisServer) async {
   lastExecuted = OperationType.Document;
-  Stopwatch sw = Stopwatch()..start();
-  for (int i = 0; i < src.length; i++) {
-    Stopwatch sw2 = Stopwatch()..start();
+  final sw = Stopwatch()..start();
+  for (var i = 0; i < src.length; i++) {
+    final sw2 = Stopwatch()..start();
 
     if (i % 1000 == 0 && i > 0) print('INC: $i docs completed');
     lastOffset = i;
     if (_SERVER_BASED_CALL) {
-      SourceRequest request = SourceRequest();
+      final request = SourceRequest();
       request.source = src;
       request.offset = i;
       log(await withTimeOut(server.document(request)));
@@ -293,14 +295,14 @@
 Future<num> testCompletions(
     String src, analysis_server.AnalysisServerWrapper wrapper) async {
   lastExecuted = OperationType.Completion;
-  Stopwatch sw = Stopwatch()..start();
-  for (int i = 0; i < src.length; i++) {
-    Stopwatch sw2 = Stopwatch()..start();
+  final sw = Stopwatch()..start();
+  for (var i = 0; i < src.length; i++) {
+    final sw2 = Stopwatch()..start();
 
     if (i % 1000 == 0 && i > 0) print('INC: $i completes');
     lastOffset = i;
     if (_SERVER_BASED_CALL) {
-      SourceRequest request = SourceRequest()
+      final request = SourceRequest()
         ..source = src
         ..offset = i;
       await withTimeOut(server.complete(request));
@@ -315,14 +317,14 @@
 Future<num> testFixes(
     String src, analysis_server.AnalysisServerWrapper wrapper) async {
   lastExecuted = OperationType.Fixes;
-  Stopwatch sw = Stopwatch()..start();
-  for (int i = 0; i < src.length; i++) {
-    Stopwatch sw2 = Stopwatch()..start();
+  final sw = Stopwatch()..start();
+  for (var i = 0; i < src.length; i++) {
+    final sw2 = Stopwatch()..start();
 
     if (i % 1000 == 0 && i > 0) print('INC: $i fixes');
     lastOffset = i;
     if (_SERVER_BASED_CALL) {
-      SourceRequest request = SourceRequest();
+      final request = SourceRequest();
       request.source = src;
       request.offset = i;
       await withTimeOut(server.fixes(request));
@@ -336,10 +338,10 @@
 
 Future<num> testFormat(String src) async {
   lastExecuted = OperationType.Format;
-  Stopwatch sw = Stopwatch()..start();
-  int i = 0;
+  final sw = Stopwatch()..start();
+  final i = 0;
   lastOffset = i;
-  SourceRequest request = SourceRequest();
+  final request = SourceRequest();
   request.source = src;
   request.offset = i;
   log(await withTimeOut(server.format(request)));
@@ -351,7 +353,7 @@
 }
 
 String mutate(String src) {
-  var chars = [
+  final chars = [
     '{',
     '}',
     '[',
@@ -380,14 +382,14 @@
     '.',
     'import '
   ];
-  String s = chars[random.nextInt(chars.length)];
-  int i = random.nextInt(src.length);
+  final s = chars[random.nextInt(chars.length)];
+  var i = random.nextInt(src.length);
   if (i == 0) i = 1;
 
   if (_DUMP_DELTA) {
     log('Delta: $s');
   }
-  String newStr = src.substring(0, i - 1) + s + src.substring(i);
+  final newStr = src.substring(0, i - 1) + s + src.substring(i);
   return newStr;
 }
 
diff --git a/tool/grind.dart b/tool/grind.dart
index f362914..445792d 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -50,8 +50,8 @@
 
 @Task('Update the docker and SDK versions')
 void updateDockerVersion() {
-  String platformVersion = Platform.version.split(' ').first;
-  List<String> dockerImageLines =
+  final platformVersion = Platform.version.split(' ').first;
+  final dockerImageLines =
       File('Dockerfile').readAsLinesSync().map((String s) {
     if (s.contains(_dockerVersionMatcher)) {
       return 'FROM google/dart-runtime:$platformVersion';
@@ -71,12 +71,12 @@
 @Task('validate that we have the correct compilation artifacts available in '
     'google storage')
 void validateStorageArtifacts() async {
-  String version = SdkManager.flutterSdk.versionFull;
+  final version = SdkManager.flutterSdk.versionFull;
 
-  const String urlBase =
+  const urlBase =
       'https://storage.googleapis.com/compilation_artifacts/';
 
-  for (String artifact in compilationArtifacts) {
+  for (final artifact in compilationArtifacts) {
     await _validateExists('$urlBase$version/$artifact');
   }
 }
@@ -84,7 +84,7 @@
 Future _validateExists(String url) async {
   log('checking $url...');
 
-  http.Response response = await http.head(url);
+  final response = await http.head(url);
   if (response.statusCode != 200) {
     fail(
       'compilation artifact not found: $url '
@@ -96,7 +96,7 @@
 @Task('build the sdk compilation artifacts for upload to google storage')
 void buildStorageArtifacts() {
   // build and copy dart_sdk.js, flutter_web.js, and flutter_web.dill
-  final Directory temp =
+  final temp =
       Directory.systemTemp.createTempSync('flutter_web_sample');
 
   try {
@@ -109,7 +109,7 @@
 void _buildStorageArtifacts(Directory dir) {
   final flutterSdkPath =
       Directory(path.join(Directory.current.path, 'flutter'));
-  String pubspec = FlutterWebManager.createPubspec(true);
+  final pubspec = FlutterWebManager.createPubspec(true);
   joinFile(dir, ['pubspec.yaml']).writeAsStringSync(pubspec);
 
   // run flutter pub get
@@ -120,26 +120,26 @@
   );
 
   // locate the artifacts
-  final List<String> flutterPackages = ['flutter', 'flutter_test'];
+  final flutterPackages = ['flutter', 'flutter_test'];
 
-  List<String> flutterLibraries = [];
-  List<String> packageLines = joinFile(dir, ['.packages']).readAsLinesSync();
-  for (String line in packageLines) {
+  final flutterLibraries = <String>[];
+  final packageLines = joinFile(dir, ['.packages']).readAsLinesSync();
+  for (var line in packageLines) {
     line = line.trim();
     if (line.startsWith('#') || line.isEmpty) {
       continue;
     }
-    int index = line.indexOf(':');
+    final index = line.indexOf(':');
     if (index == -1) {
       continue;
     }
-    String packageName = line.substring(0, index);
-    String url = line.substring(index + 1);
+    final packageName = line.substring(0, index);
+    final url = line.substring(index + 1);
     if (flutterPackages.contains(packageName)) {
       // This is a package we're interested in - add all the public libraries to
       // the list.
-      String libPath = Uri.parse(url).toFilePath();
-      for (FileSystemEntity entity in getDir(libPath).listSync()) {
+      final libPath = Uri.parse(url).toFilePath();
+      for (final entity in getDir(libPath).listSync()) {
         if (entity is File && entity.path.endsWith('.dart')) {
           flutterLibraries.add('package:$packageName/${fileName(entity)}');
         }
@@ -163,7 +163,7 @@
   final dillPath = path.join(flutterSdkPath.path,
       'bin/cache/flutter_web_sdk/flutter_web_sdk/kernel/flutter_ddc_sdk.dill');
 
-  var args = [
+  final args = <String>[
     '-s',
     dillPath,
     '--modules=amd',
@@ -190,7 +190,7 @@
   copy(joinFile(dir, ['flutter_web.dill']), artifactsDir);
 
   // Emit some good google storage upload instructions.
-  final String version = SdkManager.flutterSdk.versionFull;
+  final version = SdkManager.flutterSdk.versionFull;
   log('\nFrom the dart-services project root dir, run:');
   log('  gsutil -h "Cache-Control:public, max-age=86400" cp -z js '
       'artifacts/*.js gs://compilation_artifacts/$version/');
@@ -255,26 +255,26 @@
 
 @Task('Generate the discovery doc and Dart library from the annotated API')
 void discovery() {
-  ProcessResult result = Process.runSync(
+  final result = Process.runSync(
       Platform.executable, ['bin/server_dev.dart', '--discovery']);
 
   if (result.exitCode != 0) {
     throw 'Error generating the discovery document\n${result.stderr}';
   }
 
-  File discoveryFile = File('doc/generated/dartservices.json');
+  final discoveryFile = File('doc/generated/dartservices.json');
   discoveryFile.parent.createSync();
   log('writing ${discoveryFile.path}');
   discoveryFile.writeAsStringSync('${result.stdout.trim()}\n');
 
-  ProcessResult resultDb = Process.runSync(
+  final resultDb = Process.runSync(
       Platform.executable, ['bin/server_dev.dart', '--discovery', '--relay']);
 
   if (resultDb.exitCode != 0) {
     throw 'Error generating the discovery document\n${result.stderr}';
   }
 
-  File discoveryDbFile = File('doc/generated/_dartpadsupportservices.json');
+  final discoveryDbFile = File('doc/generated/_dartpadsupportservices.json');
   discoveryDbFile.parent.createSync();
   log('writing ${discoveryDbFile.path}');
   discoveryDbFile.writeAsStringSync('${resultDb.stdout.trim()}\n');
diff --git a/tool/load_driver.dart b/tool/load_driver.dart
index 198636e..57207c2 100644
--- a/tool/load_driver.dart
+++ b/tool/load_driver.dart
@@ -25,7 +25,7 @@
 
   print('QPS: $qps, URI: $URI');
 
-  int ms = (1000 / qps).floor();
+  final ms = (1000 / qps).floor();
   Timer.periodic(Duration(milliseconds: ms), pingServer);
 }
 
@@ -37,10 +37,10 @@
     return;
   }
 
-  Stopwatch sw = Stopwatch()..start();
+  final sw = Stopwatch()..start();
 
-  int time = DateTime.now().millisecondsSinceEpoch;
-  String message = '$POST_PAYLOAD //$time $EPILOGUE';
+  final time = DateTime.now().millisecondsSinceEpoch;
+  final message = '$POST_PAYLOAD //$time $EPILOGUE';
   print(message);
   http.post(Uri.parse(URI), body: message).then((response) {
     print('${response.statusCode}, ${sw.elapsedMilliseconds}');
diff --git a/tool/warmup.dart b/tool/warmup.dart
index 1c0d4c9..2f042eb 100644
--- a/tool/warmup.dart
+++ b/tool/warmup.dart
@@ -49,7 +49,7 @@
 
   print('Target URI\n$uri');
 
-  for (int j = 0; j < count; j++) {
+  for (var j = 0; j < count; j++) {
     await request('Dart', 'complete', dartPayload);
     await request('Dart', 'analyze', dartPayload);
     await request('Dart', 'compile', dartPayload);