Version 1.17.0-dev.6.3

Cherry-pick 'd3579131c80434941855ce9cf1ebaee85767a4aa' to dev
diff --git a/sdk/lib/convert/ascii.dart b/sdk/lib/convert/ascii.dart
index a076210..c954e64 100644
--- a/sdk/lib/convert/ascii.dart
+++ b/sdk/lib/convert/ascii.dart
@@ -69,7 +69,9 @@
 
 // Superclass for [AsciiEncoder] and [Latin1Encoder].
 // Generalizes common operations that only differ by a mask;
-class _UnicodeSubsetEncoder extends Converter<String, List<int>> {
+class _UnicodeSubsetEncoder extends Converter<String, List<int>>
+    implements ChunkedConverter<String, List<int>, String, List<int>> {
+
   final int _subsetMask;
 
   const _UnicodeSubsetEncoder(this._subsetMask);
@@ -154,7 +156,9 @@
  * This class converts Latin-1 bytes (lists of unsigned 8-bit integers)
  * to a string.
  */
-abstract class _UnicodeSubsetDecoder extends Converter<List<int>, String> {
+abstract class _UnicodeSubsetDecoder extends Converter<List<int>, String>
+    implements ChunkedConverter<List<int>, String, List<int>, String> {
+
   final bool _allowInvalid;
   final int _subsetMask;
 
diff --git a/sdk/lib/convert/base64.dart b/sdk/lib/convert/base64.dart
index 3fe1357..0254f85 100644
--- a/sdk/lib/convert/base64.dart
+++ b/sdk/lib/convert/base64.dart
@@ -70,7 +70,9 @@
  *
  * The results are ASCII strings using a restricted alphabet.
  */
-class Base64Encoder extends Converter<List<int>, String> {
+class Base64Encoder extends Converter<List<int>, String>
+    implements ChunkedConverter<List<int>, String, List<int>, String> {
+
   final bool _urlSafe;
 
   const Base64Encoder() : _urlSafe = false;
@@ -340,7 +342,8 @@
  *
  * The encoding is required to be properly padded.
  */
-class Base64Decoder extends Converter<String, List<int>> {
+class Base64Decoder extends Converter<String, List<int>>
+    implements ChunkedConverter<String, List<int>, String, List<int>> {
 
   const Base64Decoder();
 
diff --git a/sdk/lib/convert/converter.dart b/sdk/lib/convert/converter.dart
index dfcfcdf..75d4cf0 100644
--- a/sdk/lib/convert/converter.dart
+++ b/sdk/lib/convert/converter.dart
@@ -52,7 +52,8 @@
  *
  * For a non-chunked conversion converts the input in sequence.
  */
-class _FusedConverter<S, M, T> extends Converter<S, T> {
+class _FusedConverter<S, M, T> extends Converter<S, T>
+    implements ChunkedConverter<S, T, S, T> {
   final Converter<S, M> _first;
   final Converter<M, T> _second;
 
diff --git a/sdk/lib/convert/html_escape.dart b/sdk/lib/convert/html_escape.dart
index ff74442..3a516bb 100644
--- a/sdk/lib/convert/html_escape.dart
+++ b/sdk/lib/convert/html_escape.dart
@@ -152,7 +152,8 @@
  * found to be easier to read if greater-than is also escaped whenever
  * less-than is.
  */
-class HtmlEscape extends Converter<String, String> {
+class HtmlEscape extends Converter<String, String>
+    implements ChunkedConverter<String, String, String, String> {
 
   /** The [HtmlEscapeMode] used by the converter. */
   final HtmlEscapeMode mode;
diff --git a/sdk/lib/convert/json.dart b/sdk/lib/convert/json.dart
index 24931df..3d5ee82 100644
--- a/sdk/lib/convert/json.dart
+++ b/sdk/lib/convert/json.dart
@@ -159,7 +159,8 @@
 /**
  * This class converts JSON objects to strings.
  */
-class JsonEncoder extends Converter<Object, String> {
+class JsonEncoder extends Converter<Object, String>
+    implements ChunkedConverter<Object, String, Object, String> {
   /**
    * The string used for indention.
    *
@@ -284,7 +285,9 @@
  * a JSON string, and then UTF-8 encoding the string, but without
  * creating an intermediate string.
  */
-class JsonUtf8Encoder extends Converter<Object, List<int>> {
+class JsonUtf8Encoder extends Converter<Object, List<int>>
+    implements ChunkedConverter<Object, List<int>, Object, List<int>> {
+
   /** Default buffer size used by the JSON-to-UTF-8 encoder. */
   static const int DEFAULT_BUFFER_SIZE = 256;
   /** Indentation used in pretty-print mode, `null` if not pretty. */
@@ -470,7 +473,8 @@
 /**
  * This class parses JSON strings and builds the corresponding objects.
  */
-class JsonDecoder extends Converter<String, Object> {
+class JsonDecoder extends Converter<String, Object>
+    implements ChunkedConverter<String, Object, String, Object> {
   final _Reviver _reviver;
   /**
    * Constructs a new JsonDecoder.
diff --git a/sdk/lib/convert/line_splitter.dart b/sdk/lib/convert/line_splitter.dart
index b728d8f..331527e 100644
--- a/sdk/lib/convert/line_splitter.dart
+++ b/sdk/lib/convert/line_splitter.dart
@@ -19,7 +19,8 @@
  */
 class LineSplitter
     extends Converter<String, List<String>>/*=Object*/
-    implements Object/*=StreamTransformer<String, String>*/ {
+    implements ChunkedConverter<String, List<String>, String, String>
+        /*=StreamTransformer<String, String>*/ {
 
   const LineSplitter();
 
diff --git a/sdk/lib/convert/utf.dart b/sdk/lib/convert/utf.dart
index 69bb72c..aeee9ef 100644
--- a/sdk/lib/convert/utf.dart
+++ b/sdk/lib/convert/utf.dart
@@ -76,7 +76,8 @@
  * This class converts strings to their UTF-8 code units (a list of
  * unsigned 8-bit integers).
  */
-class Utf8Encoder extends Converter<String, List<int>> {
+class Utf8Encoder extends Converter<String, List<int>>
+    implements ChunkedConverter<String, List<int>, String, List<int>> {
 
   const Utf8Encoder();
 
@@ -304,7 +305,9 @@
  * This class converts UTF-8 code units (lists of unsigned 8-bit integers)
  * to a string.
  */
-class Utf8Decoder extends Converter<List<int>, String> {
+class Utf8Decoder extends Converter<List<int>, String>
+    implements ChunkedConverter<List<int>, String, List<int>, String> {
+
   final bool _allowMalformed;
 
   /**
diff --git a/sdk/lib/io/data_transformer.dart b/sdk/lib/io/data_transformer.dart
index 6a50af4..d908e67 100644
--- a/sdk/lib/io/data_transformer.dart
+++ b/sdk/lib/io/data_transformer.dart
@@ -275,7 +275,9 @@
  * The [ZLibEncoder] encoder is used by [ZLibCodec] and [GZipCodec] to compress
  * data.
  */
-class ZLibEncoder extends Converter<List<int>, List<int>> {
+class ZLibEncoder extends Converter<List<int>, List<int>>
+    implements ChunkedConverter<List<int>, List<int>, List<int>, List<int>> {
+
   /**
    * When true, `GZip` frames will be added to the compressed data.
    */
diff --git a/sdk/lib/io/string_transformer.dart b/sdk/lib/io/string_transformer.dart
index ab17eaf..1e540c3 100644
--- a/sdk/lib/io/string_transformer.dart
+++ b/sdk/lib/io/string_transformer.dart
@@ -42,7 +42,8 @@
   }
 }
 
-class _WindowsCodePageEncoder extends Converter<String, List<int>> {
+class _WindowsCodePageEncoder extends Converter<String, List<int>>
+    implements ChunkedConverter<String, List<int>, String, List<int>> {
 
   const _WindowsCodePageEncoder();
 
@@ -94,7 +95,8 @@
 }
 
 
-class _WindowsCodePageDecoder extends Converter<List<int>, String> {
+class _WindowsCodePageDecoder extends Converter<List<int>, String>
+    implements ChunkedConverter<List<int>, String, List<int>, String> {
 
   const _WindowsCodePageDecoder();
 
diff --git a/tools/VERSION b/tools/VERSION
index f0eb17c..868ff3c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 17
 PATCH 0
 PRERELEASE 6
-PRERELEASE_PATCH 2
+PRERELEASE_PATCH 3