diff --git a/.gitignore b/.gitignore
index 25a1df3..1447012 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 .buildlog
+.dart_tool/
 .DS_Store
 .idea
 .pub/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4813e9a..a2404d2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.6.6
+
+* Fix a Dart2 issue with inner stream transformation in `GuaranteeChannel`.
+
 ## 1.6.5
 
 * Fix an issue with `JsonDocumentTransformer.bind` where it created an internal
diff --git a/lib/src/guarantee_channel.dart b/lib/src/guarantee_channel.dart
index f18cbb9..ba79ed9 100644
--- a/lib/src/guarantee_channel.dart
+++ b/lib/src/guarantee_channel.dart
@@ -39,7 +39,7 @@
     // to single-subscription.
     if (innerStream.isBroadcast) {
       innerStream =
-          innerStream.transform(const SingleSubscriptionTransformer());
+          innerStream.transform(new SingleSubscriptionTransformer<T, T>());
     }
 
     _streamController = new StreamController<T>(
diff --git a/pubspec.yaml b/pubspec.yaml
index 9221866..c121f5f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: stream_channel
-version: 1.6.5
+version: 1.6.6
 description: An abstraction for two-way communication channels.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/stream_channel
diff --git a/test/json_document_transformer_test.dart b/test/json_document_transformer_test.dart
index 22bb830..b55a118 100644
--- a/test/json_document_transformer_test.dart
+++ b/test/json_document_transformer_test.dart
@@ -13,8 +13,8 @@
   var sinkController;
   StreamChannel<String> channel;
   setUp(() {
-    streamController = new StreamController();
-    sinkController = new StreamController();
+    streamController = new StreamController<String>();
+    sinkController = new StreamController<String>();
     channel =
         new StreamChannel<String>(streamController.stream, sinkController.sink);
   });
diff --git a/test/stream_channel_test.dart b/test/stream_channel_test.dart
index b8ebcbd..c29002f 100644
--- a/test/stream_channel_test.dart
+++ b/test/stream_channel_test.dart
@@ -10,9 +10,9 @@
 import 'package:test/test.dart';
 
 void main() {
-  var streamController;
-  var sinkController;
-  var channel;
+  StreamController streamController;
+  StreamController sinkController;
+  StreamChannel channel;
   setUp(() {
     streamController = new StreamController();
     sinkController = new StreamController();
@@ -58,36 +58,35 @@
   });
 
   test("transformStream() transforms only the stream", () async {
-    var transformed = channel.transformStream(UTF8.decoder);
+    var transformed =
+        channel.cast<String>().transformStream(const LineSplitter());
 
-    streamController.add([102, 111, 111, 98, 97, 114]);
+    streamController.add("hello world");
+    streamController.add(" what\nis");
+    streamController.add("\nup");
     streamController.close();
-    expect(await transformed.stream.toList(), equals(["foobar"]));
+    expect(await transformed.stream.toList(),
+        equals(["hello world what", "is", "up"]));
 
-    transformed.sink.add("fblthp");
+    transformed.sink.add("fbl\nthp");
     transformed.sink.close();
-    expect(sinkController.stream.toList(), completion(equals(["fblthp"])));
+    expect(sinkController.stream.toList(), completion(equals(["fbl\nthp"])));
   });
 
   test("transformSink() transforms only the sink", () async {
-    var transformed = channel.transformSink(
-        new StreamSinkTransformer.fromStreamTransformer(UTF8.encoder));
+    var transformed = channel.cast<String>().transformSink(
+        new StreamSinkTransformer.fromStreamTransformer(const LineSplitter()));
 
-    streamController.add([102, 111, 111, 98, 97, 114]);
+    streamController.add("fbl\nthp");
     streamController.close();
-    expect(
-        await transformed.stream.toList(),
-        equals([
-          [102, 111, 111, 98, 97, 114]
-        ]));
+    expect(await transformed.stream.toList(), equals(["fbl\nthp"]));
 
-    transformed.sink.add("fblthp");
+    transformed.sink.add("hello world");
+    transformed.sink.add(" what\nis");
+    transformed.sink.add("\nup");
     transformed.sink.close();
-    expect(
-        sinkController.stream.toList(),
-        completion(equals([
-          [102, 98, 108, 116, 104, 112]
-        ])));
+    expect(sinkController.stream.toList(),
+        completion(equals(["hello world what", "is", "up"])));
   });
 
   test("changeStream() changes the stream", () {
