>>>
var xsrfValue = _urlIsSameOrigin(url) ?
    _cookies[xsrfCookieName != null ?
    xsrfCookieName :
    defaults.xsrfCookieName] :
    null;
<<<
var xsrfValue = _urlIsSameOrigin(url) ?
    _cookies[xsrfCookieName != null ?
        xsrfCookieName :
        defaults.xsrfCookieName] :
    null;
>>>
class _Streams {
  _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
      : _typeCounts = inheritStreams == null ?
      new HashMap<String, int>() :
      new HashMap.from(inheritStreams._typeCounts);
}
<<<
class _Streams {
  _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
      : _typeCounts = inheritStreams == null ?
          new HashMap<String, int>() :
          new HashMap.from(inheritStreams._typeCounts);
}