anchor.diff:  
     /** Last byte of media (inclusive) */
     final core.int end;
  +
  +  /** Length of this range (i.e. number of bytes) */
  +  core.int get length => end - start + 1;
   
     ByteRange(this.start, this.end) {
       if (!(start == 0  && end == -1 || start >= 0 && end > start)) {
  
positive.code:               }..addAll(stream ? {} : {
                  'x-upload-content-length' : '$totalLength',
                }),
                'response' : emptyResponse(
                    200,
                    new HeadersImpl({'location' : ['http://upload.com/'],}),
                    '')
  
negative.code:       var url = new UrlPattern(path).generate(urlParams, queryParams);
        var uri = Uri.parse(url);
        if (uploadMedia != null || downloadAsMedia) {
          var prefix = uri.query.isEmpty ? '?' : '&';
          if (uploadMedia != null) {
            if (uploadOptions is common_external.ResumableUploadOptions) {
              url = '${url}${prefix}uploadType=resumable';
              prefix = '&';
            } else if (body == null) {
              url = '${url}${prefix}uploadType=media';
              prefix = '&';
            } else {
              url = '${url}${prefix}uploadType=multipart';
              prefix = '&';
            }
          }
  
          if (downloadAsMedia) {
            url = '${url}${prefix}alt=media';
          }
  
          uri = Uri.parse(url);
  