>>>
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);
}