Make it strong mode clean.
diff --git a/pkgs/markdown/.analysis_options b/pkgs/markdown/.analysis_options
new file mode 100644
index 0000000..a10d4c5
--- /dev/null
+++ b/pkgs/markdown/.analysis_options
@@ -0,0 +1,2 @@
+analyzer:
+  strong-mode: true
diff --git a/pkgs/markdown/CHANGELOG.md b/pkgs/markdown/CHANGELOG.md
index 924535f..5d88d40 100644
--- a/pkgs/markdown/CHANGELOG.md
+++ b/pkgs/markdown/CHANGELOG.md
@@ -7,6 +7,9 @@
   `![text](img.png)` would compile too
   `<a href="img.prg"><img src="img.prg" alt="text"></img></a>`. That same code
   will now compile to `<img src="img.png" alt="text" />`.
+* Fix all [strong mode][] errors.
+
+[strong mode]: https://github.com/dart-lang/dev_compiler/blob/master/STRONG_MODE.md
 
 ## 0.9.0
 
diff --git a/pkgs/markdown/lib/src/block_parser.dart b/pkgs/markdown/lib/src/block_parser.dart
index 00d3803..aa82149 100644
--- a/pkgs/markdown/lib/src/block_parser.dart
+++ b/pkgs/markdown/lib/src/block_parser.dart
@@ -216,7 +216,7 @@
   const SetextHeaderWithIdSyntax();
 
   Node parse(BlockParser parser) {
-    var element = super.parse(parser);
+    var element = super.parse(parser) as Element;
     element.generatedId = BlockSyntax.generateAnchorHash(element);
     return element;
   }
@@ -242,7 +242,7 @@
   const HeaderWithIdSyntax();
 
   Node parse(BlockParser parser) {
-    var element = super.parse(parser);
+    var element = super.parse(parser) as Element;
     element.generatedId = BlockSyntax.generateAnchorHash(element);
     return element;
   }
diff --git a/pkgs/markdown/lib/src/extension_set.dart b/pkgs/markdown/lib/src/extension_set.dart
index 0beb1dd..665d8f8 100644
--- a/pkgs/markdown/lib/src/extension_set.dart
+++ b/pkgs/markdown/lib/src/extension_set.dart
@@ -7,8 +7,8 @@
   static ExtensionSet commonMark = new ExtensionSet._(
       [const FencedCodeBlockSyntax()], [new InlineHtmlSyntax()]);
 
-  final List blockSyntaxes;
-  final List inlineSyntaxes;
+  final List<BlockSyntax> blockSyntaxes;
+  final List<InlineSyntax> inlineSyntaxes;
 
   ExtensionSet._(this.blockSyntaxes, this.inlineSyntaxes);
 }
diff --git a/pkgs/markdown/lib/src/inline_parser.dart b/pkgs/markdown/lib/src/inline_parser.dart
index 9d78447..db07688 100644
--- a/pkgs/markdown/lib/src/inline_parser.dart
+++ b/pkgs/markdown/lib/src/inline_parser.dart
@@ -389,7 +389,7 @@
       image.attributes["title"] = escapeHtml(link.title);
     }
 
-    var alt = state.children.map((e) => e is! Text ? "" : e.text).join(" ");
+    var alt = state.children.map((e) => e is Text ? e.text : "").join(" ");
     if (alt != "") image.attributes["alt"] = alt;
 
     return image;
diff --git a/pkgs/markdown/tool/common_mark_stats.dart b/pkgs/markdown/tool/common_mark_stats.dart
index 72a0aff..f34ca05 100644
--- a/pkgs/markdown/tool/common_mark_stats.dart
+++ b/pkgs/markdown/tool/common_mark_stats.dart
@@ -95,7 +95,7 @@
   var testFile = new File(p.join(_currentDir, _commonMarkTests));
   var testsJson = testFile.readAsStringSync();
 
-  var testArray = JSON.decode(testsJson) as List<Map>;
+  var testArray = JSON.decode(testsJson) as List<Map<String, dynamic>>;
 
   var sections = new Map<String, List<CommonMarkTestCase>>();