Fix Dart 2 runtime errors (#58)

Closes #57
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0807821..dc79f29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.0.7
+
+* Fix Dart 2 runtime errors.
+
 ## 2.0.6
 
 * Add further support for Dart 2.0 library changes to `Stream`.
diff --git a/lib/src/result/capture_sink.dart b/lib/src/result/capture_sink.dart
index c85b553..742c160 100644
--- a/lib/src/result/capture_sink.dart
+++ b/lib/src/result/capture_sink.dart
@@ -13,7 +13,7 @@
   CaptureSink(EventSink<Result<T>> sink) : _sink = sink;
 
   void add(T value) {
-    _sink.add(new Result.value(value));
+    _sink.add(new Result<T>.value(value));
   }
 
   void addError(Object error, [StackTrace stackTrace]) {
diff --git a/lib/src/result/capture_transformer.dart b/lib/src/result/capture_transformer.dart
index 5933f0c..b9a538a 100644
--- a/lib/src/result/capture_transformer.dart
+++ b/lib/src/result/capture_transformer.dart
@@ -14,10 +14,7 @@
 class CaptureStreamTransformer<T> extends StreamTransformerBase<T, Result<T>> {
   const CaptureStreamTransformer();
 
-  Stream<Result<T>> bind(Stream<T> source) {
-    return new Stream<Result<T>>.eventTransformed(source, _createSink);
-  }
-
-  // Since Stream.eventTransformed is not generic, this method can be static.
-  static EventSink _createSink(EventSink<Result> sink) => new CaptureSink(sink);
+  Stream<Result<T>> bind(Stream<T> source) =>
+      new Stream<Result<T>>.eventTransformed(
+          source, (sink) => new CaptureSink<T>(sink));
 }
diff --git a/lib/src/stream_splitter.dart b/lib/src/stream_splitter.dart
index ac4260d..3616501 100644
--- a/lib/src/stream_splitter.dart
+++ b/lib/src/stream_splitter.dart
@@ -60,7 +60,7 @@
   static List<Stream<T>> splitFrom<T>(Stream<T> stream, [int count]) {
     if (count == null) count = 2;
     var splitter = new StreamSplitter<T>(stream);
-    var streams = new List<Stream>.generate(count, (_) => splitter.split());
+    var streams = new List<Stream<T>>.generate(count, (_) => splitter.split());
     splitter.close();
     return streams;
   }
diff --git a/pubspec.yaml b/pubspec.yaml
index 3183b45..ae09136 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: async
-version: 2.0.6
+version: 2.0.7-dev
 author: Dart Team <misc@dartlang.org>
 description: Utility functions and classes related to the 'dart:async' library.
 homepage: https://www.github.com/dart-lang/async
diff --git a/test/result/result_test.dart b/test/result/result_test.dart
index 210ae3f..23c9f63 100644
--- a/test/result/result_test.dart
+++ b/test/result/result_test.dart
@@ -173,8 +173,8 @@
   });
 
   test("capture stream", () {
-    StreamController<int> c = new StreamController<int>();
-    Stream<Result> stream = Result.captureStream(c.stream);
+    var c = new StreamController<int>();
+    var stream = Result.captureStream(c.stream);
     var expectedList = new Queue.from([
       new Result.value(42),
       new Result.error("BAD", stack),
@@ -185,9 +185,8 @@
       expectResult(actual, expectedList.removeFirst());
     }
 
-    stream.listen(expectAsync1(listener, count: 3), onError: (e, s) {
-      fail("Unexpected error: $e");
-    }, onDone: expectAsync0(() {}), cancelOnError: true);
+    stream.listen(expectAsync1(listener, count: 3),
+        onDone: expectAsync0(() {}), cancelOnError: true);
     c.add(42);
     c.addError("BAD", stack);
     c.add(37);
diff --git a/test/stream_completer_test.dart b/test/stream_completer_test.dart
index 2e9ff9b..4f30a7a 100644
--- a/test/stream_completer_test.dart
+++ b/test/stream_completer_test.dart
@@ -140,7 +140,7 @@
 
   test("cancelOnError true when listening before linking stream", () async {
     var completer = new StreamCompleter();
-    var lastEvent = -1;
+    Object lastEvent = -1;
     var controller = new StreamController();
     completer.stream.listen((value) {
       expect(value, lessThan(3));
@@ -173,7 +173,7 @@
 
   test("cancelOnError true when listening after linking stream", () async {
     var completer = new StreamCompleter();
-    var lastEvent = -1;
+    Object lastEvent = -1;
     var controller = new StreamController();
     completer.setSourceStream(controller.stream);
     controller.add(1);
diff --git a/test/stream_group_test.dart b/test/stream_group_test.dart
index 65ddb42..95eb8c1 100644
--- a/test/stream_group_test.dart
+++ b/test/stream_group_test.dart
@@ -49,7 +49,7 @@
       expect(streamGroup.close(), completes);
 
       var transformed = streamGroup.stream.transform(
-          new StreamTransformer.fromHandlers(
+          new StreamTransformer<String, String>.fromHandlers(
               handleError: (error, _, sink) => sink.add("error: $error")));
       expect(transformed.toList(),
           completion(equals(["error: first", "error: second"])));
@@ -72,7 +72,7 @@
       expect(streamGroup.close(), completes);
 
       var transformed = streamGroup.stream.transform(
-          new StreamTransformer.fromHandlers(
+          new StreamTransformer<String, String>.fromHandlers(
               handleData: (data, sink) => sink.add("data: $data"),
               handleError: (error, _, sink) => sink.add("error: $error")));
       expect(